HDU 2602.Bone Collector

来源:互联网 发布:mac清理工具 编辑:程序博客网 时间:2024/06/05 10:43

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

AC代码(C++):

#include <iostream>#include <algorithm>#define INF 0x3f3f3f3fusing namespace std;int n, v;int val[1005];int vol[1005];int dp[1005][1005];int main() {    int t;    cin >> t;    while (t--) {        cin >> n >> v;        for (int i = 1; i <= n; i++)cin >> val[i];        for (int i = 1; i <= n; i++)cin >> vol[i];        memset(dp, 0, sizeof(dp));        for (int i = 1; i <= n; i++) {            for (int j = 0; j <= v; j++) {                if (j < vol[i])dp[i][j] = dp[i - 1][j];                else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - vol[i]] + val[i]);            }        }        cout << dp[n][v] << endl;    }    //system("pause");}
总结: 01背包问题. 注意j要从0开始, 因为可能有重量为0的物品, 就因为这个WA了几次.

原创粉丝点击