Мой алгоритм выглядит точно так же при сравнении с другими онлайн-источниками, но я не могу найти ошибку.
int knapSack(int value[],int weight[],int size,int W)
{
int knapsack[size+1][W+1];
for(int i = 0;i<=size;i++)
{
for(int j = 0;j<=W;j++)
{
if(i==0 || j==0)
knapsack[i][j] = 0;
if(weight[i-1] > j)
knapsack[i][j] = knapsack[i-1][j];
else
knapsack[i][j] = max(knapsack[i-1][j],value[i-1]+knapsack[i-1][W-weight[i-1]]);
}
}
return knapsack[size][W];
}