藍橋杯—01揹包



  算法提高 01揹包  
時間限制:1.0s   內存限制:256.0MB
    
問題描述
  給定N個物品,每個物品有一個重量W和一個價值V.你有一個能裝M重量的揹包.問怎麼裝使得所裝價值最大.每個物品只有一個.
輸入格式
  輸入的第一行包含兩個整數n, m,分別表示物品的個數和揹包能裝重量。
  以後N行每行兩個數Wi和Vi,表示物品的重量和價值
輸出格式
  輸出1行,包含一個整數,表示最大價值。
樣例輸入
3 5
2 3
3 5
4 7
樣例輸出
8
數據規模和約定
  1<=N<=200,M<=5000.
#include<iostream>
#define maxn 5005
using namespace std;
int w[maxn],p[maxn];
int dp[201][maxn];
int main()
{
	int n,m;
	cin>>n>>m;
	int i,j;
	for(i=1;i<=n;i++)
	cin>>w[i]>>p[i];
	for(i=1;i<=n;i++)
	{
		for(j=0;j<=m;j++)
		{
			if(j<w[i])
			dp[i][j]=dp[i-1][j];
			else  
			dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+p[i]);
		}
	}
	cout<<dp[n][m]<<endl;
} 
揹包問題,判斷是不是要放物品
  算法提高 01揹包  
時間限制:1.0s   內存限制:256.0MB
    
問題描述
  給定N個物品,每個物品有一個重量W和一個價值V.你有一個能裝M重量的揹包.問怎麼裝使得所裝價值最大.每個物品只有一個.
輸入格式
  輸入的第一行包含兩個整數n, m,分別表示物品的個數和揹包能裝重量。
  以後N行每行兩個數Wi和Vi,表示物品的重量和價值
輸出格式
  輸出1行,包含一個整數,表示最大價值。
樣例輸入
3 5
2 3
3 5
4 7
樣例輸出
8
數據規模和約定
  1<=N<=200,M<=5000.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章