문제 링크 : https://www.acmicpc.net/problem/12865
문제 설명
엄처 유명한 배낭 문제(Knapsack Problem 이다 ..
참고 : https://ko.wikipedia.org/wiki/%EB%B0%B0%EB%82%AD_%EB%AC%B8%EC%A0%9C
알고리즘
DP 알고리즘을 이용하여 간단하게 풀 수있다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
int dp[101][100001];
int w[101], v[101];
int N, K;
cin >> N >> K;
for (int i = 1; i <= N; i++)
cin >> w[i] >> v[i];
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= K; j++) {
dp[i][j] = dp[i - 1][j];
if (j >= w[i]) {
dp[i][j] = max(dp[i][j], dp[i-1][j - w[i]] + v[i]);
}
}
}
cout << dp[N][K];
}
|
cs |
'c++ > 백준' 카테고리의 다른 글
백준 9095번 : 1,2,3 더하기 (0) | 2020.04.06 |
---|---|
백준 11055: 가장 큰 증가 부분 수열 (0) | 2020.04.03 |
백준 1987: 알파벳 (0) | 2020.04.02 |
백준 1449: 수리공 항승 (0) | 2020.04.02 |
백준 11057: 오르막수 (0) | 2020.04.02 |