반응형
문제
풀이
[i, j]에서 [i+1, j], [i][j+1], [i+1][j+1]로 이동할 수 있습니다.
[i+1][j+1]은 어차피 [i+1, j], [i][j+1]를 거쳐 이동할 수 있으므로 고려하지 않아도 됩니다.
(돌아서 갈 때 얻는 사탕이 무조건 크거나 같습니다.)
따라서 dp[i]j[j]에는 dp[i-1][j], dp[i][j-1] 중 더 큰 값에 map[i][j]를 더해준 값을 넣습니다.
소스 코드
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
|
#include <iostream>
#include <algorithm>
using namespace std;
int map[1000][1000];
int dp[1000][1000];
int N, M;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> N >> M;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> map[i][j];
dp[i][j] = map[i][j];
if (i - 1 >= 0) {
dp[i][j] = max(dp[i][j], dp[i - 1][j] + map[i][j]);
}
if (j - 1 >= 0) {
dp[i][j] = max(dp[i][j], dp[i][j - 1] + map[i][j]);
}
}
}
cout << dp[N - 1][M - 1];
return 0;
}
|
cs |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 11051] 이항 계수 2 C++ (0) | 2021.09.16 |
---|---|
[백준 5014] 스타트링크 C++ (0) | 2021.09.16 |
[백준 1915] 가장 큰 정사각형 C++ (0) | 2021.09.13 |
[백준 3190] 뱀 C++ (0) | 2021.09.12 |
[백준 14502] 연구실 C++ (0) | 2021.09.11 |