为什么用01背包解用从前往后和从后往前传递结果不一样
查看原帖
为什么用01背包解用从前往后和从后往前传递结果不一样
1244185
noniub楼主2024/10/26 22:49
#include<iostream>
using namespace std;
int dp[1001][100001];
int w[1001];
int main()
{
	int n,c;
	cin>>n>>c;
	for(int i=1;i<=n;i++)
		cin>>w[i];
	for(int i=1;i<=n;i++)
	{
	//	for(int j=c;j>=0;j--)
		for(int j=0;j<=c;j++)
		{
			if(j>=w[i])
				dp[i][j]=max(dp[i-1][j-w[i]]+w[i],dp[i-1][j]);
			else
				dp[i][j]=dp[i-1][j];
		//	cout<<dp[i][j]<<" ";
		}
	//	cout<<'\n';
	}
	cout<<dp[n][c]<<endl;
	return 0;
 }
2024/10/26 22:49
加载中...