这是我写的01背包的程序
我很蒻
#include<iostream>
using namespace std;
int w[101];//单个重量
int v[101];//单个价值
int sack[101][101];
int n;
int c;
int main()
{
cin>>n;//物品数量
cin>>c;//总重量
for(int i=1;i<=n;i++)
{
cin>>w[i];
cin>>v[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=c;j++)
{
if(j>=w[i])
sack[i][j]=max(sack[i-1][j],sack[i-1][j-w[i]]+v[i]);
else
sack[i][j]=sack[i-1][j];
}
}
for(int i=1;i<n;i++)
{
for(int j=1;j<c;i++)
{
cout<<sack[i][j]<<endl;
}
}
return 0;
}
这是我用来试验程序的问题:
假设现有容量10kg的背包,另外有3个物品,分别为a1,a2,a3。物品a1重量为3kg,价值为4;物品a2重量为4kg,价值为5;物品a3重量为5kg,价值为6。将哪些物品放入背包可使得背包中的总价值最大?
这是我的输出的其中一部分:
0
0
156827763
-2097152000
167772160
0
0
220
56479
0
1409286400
0
36306944
641028353
-620756992
-861963152
0
81311
2095
0
4
8
446720
16777216
58564400
请问我这个程序错在哪?