您的位置:首页 > 其它

hdu2602 Bone Collector (01背包)

2014-05-02 16:36 274 查看
本文出自:http://blog.csdn.net/svitter

题意:典型到不能再典型的01背包。给了我一遍AC的快感。

//============================================================================
// Name        : 2602.cpp
// Author      : vit
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;
#define max(a, b) a > b ? a : b

struct Bone{
	int val;
	int vol;
};

Bone b[1010];
int dp[1010];

void ace(){
	//work point
	int t;
	int i, j ,k;

	//num
	int n, v;

	cin >> t;
	while(t --){
		memset(dp, 0, sizeof(dp));
		scanf("%d%d", &n, &v);
		for(i = 0; i < n; i++){
			scanf("%d", &b[i].val);
		}
		for(i = 0; i < n; i++){
			scanf("%d", &b[i].vol);
		}

		for(i = 0; i < n; i++)
			for(j = v; j >= b[i].vol; j--){
				dp[j] = max(dp[j], dp[j - b[i].vol] + b[i].val);
			}

		printf("%d\n", dp[v]);
	}
}
int main() {
	ace();
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: