الگوریتم کوله پشتی صفر و یک ( روش پویا) :
void dpknapsack(float p[],float w[], int n , float m,int x[])
{
float p1,w1;
set s[n+1],s1[n+1];
s[0]={(0,0)};
for(i=1;i<=n;i++)
{
s1[i]={(p1,w1)|(p1-p[i],w1-w[i])Es[i-1]&&w1<=M};
s[i]=merge(s[i-1],s1[i]);
}
(p1,w1)=last tuple in s[n];
for(i=n;i>0;i--)...