HDU1171 0-1背包问题

题意和思路:给出物品价值和数量,数组存储每个物品的价值,重复的分别存储,转化为0-1背包问题,要使得a,b分得的价值最接近且a不小于b,总价值的一半就是背包的容量。

代码如下:

#include
#include 
#include
#include
#include
using namespace std;
int main()
{
	int n,v,c;
	int dp[300000],p[5005];
	while(cin>>n&&n>=0)
	{
		memset(dp,0,sizeof(dp));
		memset(p,0,sizeof(p));
		int k=0,i,j,sum=0;
		for(i=0;i>v>>c;
			for(j=0;j=p[i];j--)
			{
				dp[j]=max(dp[j],dp[j-p[i]]+p[i]);
			}
		}
		cout<

 

你可能感兴趣的:(HDU1171 0-1背包问题)