您的位置:首页 > 其它

HackerRank# Knapsack

2015-05-05 23:57 417 查看
原题地址

背包问题:容量为k,物品的体积和价值相等,求最大价值是多少

代码:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

#define MAX_N 2048
#define MAX_K 2048

int T;
int n, k;
int a[MAX_N];
int cnt[MAX_K];

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
cin >> T;
while (T--) {
int best = 0;
cin >> n >> k;
for (int i = 0; i < n; i++)
cin >> a[i];
memset(cnt, 0, sizeof(cnt));
for (int i = n - 1; i >= 0; i--)
for (int j = 0; j <= k; j++)
cnt[j] = max(j >= a[i] ? cnt[j - a[i]] + a[i] : 0, cnt[j]);
cout << cnt[k] << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: