算法-动态规划-背包问题

时间:2020-12-30 04:24:22

有N件物品和一个容积为M的包,第i件物品的体积为w[i],价值d[i],将哪些物品装入可以使得体积最大,每个物品可以选择放或者不放

#include<cstdio>
#include<iostream> 
using namespace std;
int f[100][100],w[100],d[100];
int main()
{
	int m,n;
	cin>>m>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>w[i]>>d[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)//从背包的大小为1开始试 
		{
			if(j>=w[i])
			{
			f[i][j]	=max(f[i-1][j],f[i-1][j-w[i]+d[i]]);
			}
			else f[i][j]=f[i-1][j];
		}
	}
	cout<<f[n][m];
	return 0;
}