码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活->多重背包问题

时间:2015-04-24 19:19:37      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   背包   

分析:多重背包问题。这里直接转换为01背包,为使用二进制。


#include<iostream>
using namespace std;

int price[101];
int weight[101];
int number[101];
int dp[101];

int main()
{
	int C,n,m;
	int i,j,k;

	cin>>C;
	while(C--)
	{
		cin>>n>>m;
		for(i=0;i<m;i++)
		{
			cin>>price[i]>>weight[i]>>number[i];
		}
		memset(dp,0,sizeof(dp));            //多重背包,未用二进制优化,转换为0-1背包
		for(i=0;i<m;i++)
			for(j=1;j<=number[i];j++)
				for(k=n;k>=price[i];k--)
					if(dp[k]<dp[k-price[i]]+weight[i])
						dp[k]=dp[k-price[i]]+weight[i];

		cout<<dp[n]<<endl;
	}
	return 0;
}


HDU ACM 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活->多重背包问题

标签:c   c++   acm   算法   背包   

原文地址:http://blog.csdn.net/a809146548/article/details/45247905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!