https://www.acmicpc.net/problem/1495
다이나믹 프로그래밍을 이용헤서 풀었습니다.
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 | #include <iostream> using namespace std; int main() { int n, s, m; bool dp[101][10001] = { {0,}, }; int v[101]; int ret = -1; cin >> n >> s >> m; for (int i = 1; i <= n; i++) cin >> v[i]; if (s - v[1] >= 0) dp[1][s-v[1]] = true; if (s + v[1] <= m) dp[1][s+v[1]] = true; for (int i = 2; i <= n; i++) { for (int j = 0; j <= m; j++) { if (dp[i - 1][j]) { if (j - v[i] >= 0) dp[i][j - v[i]] = true; if (j + v[i] <= m) dp[i][j + v[i]] = true; } } } for (int i = 0; i <= m; i++) if (dp[n][i]) ret = i; cout << ret; } | cs |
반응형
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[bfs] 백준 7569 토마토 (0) | 2019.03.22 |
---|---|
[bfs] 라비다 1052 maze problem (0) | 2019.03.18 |
[dp] 백준 1309 동물원 (0) | 2019.02.02 |
[dp] 백준 2579 계단오르기 (0) | 2019.02.02 |
[etc] 백준 10757 큰 수 A+B (0) | 2019.01.29 |