#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base :: sync_with_stdio(false);
int n, m, w, v;
cin >> n >> m;
vector<int> dy(m+1,0);
for(int i = 0; i < n; i++){
cin >> w >> v;
for(int j = w; j <= m; j++){
dy[j] = max(dy[j], dy[j-w]+v);
}
}
cout << dy[m];
return 0;
}
1. 다이나믹 테이블을 정의한다.
2. 입력 순서대로 dy테이블에 값을 할당한다.
https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/dashboard
'기타등등 > 알고리즘 기록' 카테고리의 다른 글
[C++] 그래프 - 위상정렬(그래프 정렬) (0) | 2021.08.18 |
---|---|
[C++] DP - 플로이드 워샬 알고리즘(최단거리 , 모든 N과 모든 N의 관계) (0) | 2021.08.18 |
[C++] DP - 알리바바와 40인의 도둑 (0) | 2021.08.17 |
[C++] DP - 최대 부분 증가수열 (0) | 2021.08.17 |
[C++] DP - 네트워크 선 자르기(Top-Down) (0) | 2021.08.17 |