HDOJ 2603:Bone Collector 0-1背包问题

    题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=2602;

    这是一道很一般的01背包问题, 用动态规划求解就行了。

    这是我的AC代码。

   

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;

const int Max = 1010;
int vol[Max];
int val[Max];
int dp[Max][Max];

int main()
{
	int N, V, cases;
	cin >> cases;
	while(cases--)
	{
		memset(dp, 0, sizeof(dp));
		cin >> N >> V;
		for(int i=1; i<=N; i++) scanf("%d", val + i);
		for(int i=1; i<=N; i++) scanf("%d", vol + i);
		
		for(int i=1; i<=N; i++)
			for(int j=0; j<=V; j++)
			{
				dp[i][j] = (i==1 ? 0 : dp[i-1][j]);
				if(j >= vol[i])
				{
					if(dp[i-1][j-vol[i]] + val[i] > dp[i][j]) 
						dp[i][j] = dp[i-1][j-vol[i]] + val[i];
				}
			}
		
		printf("%d\n", dp[N][V]);
	}
	system("pause");
	return 0;
}



你可能感兴趣的:(url,System)