POJ - 3624 Charm Bracelet

题目大意:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。

解题思路:01背包

#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    int N, M;
    while (scanf("%d%d", &N, &M) != EOF) {
        int DP[13000] = {0};
        for (int i = 0; i < N; i++) {
            int W, D;
            scanf("%d%d", &W, &D);
            for (int j = M; j >= W; j--)
                DP[j] = max(DP[j], DP[j-W] + D);
        }
        printf("%d\n", DP[M]);
    }
    return 0;
} 

你可能感兴趣的:(POJ - 3624 Charm Bracelet)