求助
  • 板块学术版
  • 楼主江户川真白
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/9/28 17:43
  • 上次更新2023/11/5 12:28:36
查看原帖
求助
283690
江户川真白楼主2020/9/28 17:43

这是我写的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

请问我这个程序错在哪?

2020/9/28 17:43
加载中...