반응형
https://www.acmicpc.net/problem/1535
배낭 문제와 동일한 풀이였습니다.
체력은 100이지만 0이 되면 죽으므로, 99라고 잡아주었습니다.
#include <iostream>
#include <algorithm>
#define MAX 20
using namespace std;
int n, a[MAX], b[MAX], dp[100] = { 0 };
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
for (int i = 0; i < n; i++) scanf("%d", &b[i]);
for (int i = 0; i < n; i++) {
for (int j = 99; j >= a[i]; j--) {
dp[j] = max(dp[j], dp[j - a[i]] + b[i]);
}
}
printf("%d", dp[99]);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1347 : 미로 만들기 (0) | 2021.11.19 |
---|---|
백준 2669 : 직사각형 네개의 합집합의 면적 구하기 (0) | 2021.11.19 |
백준 1451 : 직사각형으로 나누기 (0) | 2021.11.19 |
백준 4948 : 베르트랑 공준 (0) | 2021.11.19 |
백준 13305 : 주유소 (0) | 2021.11.19 |