#include <iostream> #include <algorithm> #include <string.h> using namespace std; int N, K; int dp[101][100001]; int w[101]; int v[101]; int solve(int item, int capacity) { if(item >= N) { return 0; } if(dp[item][capacity] != 0) { return dp[item][capacity]; } // 배낭에 넣지 않는 경우 dp[item][capacity] = solve(item+1, capacity); // 배낭에 넣는 경우 if(capacity-w[item] >= 0) { dp[item][capacity] = max(dp[item][capacity], solve(item+1, capacity-w[item]) + v[item]); } return dp[item][capacity]; } int main(void) { // freopen("B12865_input.txt", "r", stdin); cin >> N >> K; for(int i = 0; i < N; i++) { cin >> w[i] >> v[i]; } cout << solve(0, K); return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 10211] Maximum Subarray (DP) (C/C++) (★★) (0) | 2020.03.15 |
---|---|
[백준 17485] 진우의 달 여행 (DP) (C/C++) (★) (0) | 2020.03.13 |
[백준 1480] 보석 모으기 (DP, Bitmask) (C/C++) (★★★) (0) | 2020.03.13 |
[백준 2098] 외판원 순회 (DP, Bitmask) (C/C++) (★★★) (0) | 2020.03.12 |
[백준 2294] 동전 2 (DP) (C/C++) (★★) (0) | 2020.03.07 |