d637: 路過的鴨duck

Tags: knapsack


出處:https://zerojudge.tw/ShowProblem?problemid=d637
提交:https://zerojudge.tw/Submissions?problemid=d637&account=allllllan123456


問題:給你 n 個物品各自的重量 $\in[1,100]$ 與價值 $\in[1,5000]$,請問應該選入哪些物品到限重 100 的背包中才能最大化背包的價值?


解法:經典背包問題,可參閱本站對於該問題的解析。


 1#include <bits/stdc++.h>
 2using namespace std;
 3
 4int main() { ios_base::sync_with_stdio(false); cin.tie(0); // IO 優化
 5    int dp[101]={0}, n; cin >> n;
 6    while (n--) {
 7        int w, v; cin >> w >> v;
 8        for (int i=100; i>=w; i--)
 9            if (dp[i-w] + v > dp[i])
10                dp[i] = dp[i-w] + v;
11    }
12    cout << dp[100] << '\n';
13    return 0;
14}

no image