250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(SWEA c++)3282. 0/1 Knapsack 본문
728x90
반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
DP의 대표적인 알고리즘 문제.
N개의 물건 중에서 최대 W만큼의 무게를 가방에 넣을 때 구할 수 있는 최댓값을 구하면 된다.
이 문제를 푸는데 매우 중요한 개념이 아래 블로그에 나와있다.
참고하여 코드를 보면 이해를 할 수 있다..!
Dynamic Programming: 배낭 채우기 문제 (Knapsack Problem)
도둑이 보석가게에 배낭을 메고 침입했다. 배낭의 최대 용량은 W이며, 이를 초과해서 보석을 담으면 배낭이 찢어질 것이다. 각 보석들의 무게와 가격은 알고 있다. 배낭이 찢어지지 않는 선에서
gsmesie692.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
for(int tc = 1; tc <= t; tc++)
{
int v[101][1001];
int w[101];
int c[101];
int N, W, answer = 0;
cin >> N >> W;
for(int i = 1; i <= N; i++)
cin >> w[i] >> c[i];
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= W; j++)
{
if(w[i] > j)
v[i][j] = v[i - 1][j];
else
v[i][j] = c[i] + v[i - 1][j - w[i]] > v[i - 1][j] ? c[i] + v[i - 1][j - w[i]] : v[i - 1][j];
}
}
cout << "#" << tc << " " << v[N][W] << endl;
}
return 0;
}
728x90
반응형
'SW Expert Academy' 카테고리의 다른 글
(SWEA c++)3376. 파도반 수열 (0) | 2020.11.03 |
---|---|
(SWEA c++)3314. 보충학습과 평균 (0) | 2020.11.03 |
(SWEA c++)3304. 최장 공통 부분 수열 (0) | 2020.11.02 |
(SWEA c++)3260. 두 수의 덧셈 (0) | 2020.11.02 |
(SWEA c++)3233. 정삼각형 분할 놀이 (0) | 2020.10.28 |