문제
백준 11048번 이동하기 https://www.acmicpc.net/problem/11048
11048번: 이동하기
준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는
www.acmicpc.net
코드
#include<iostream>
#include<algorithm>
using namespace std;
int n, m;
int maze[1001][1001];
long long dp[1001][1001];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> maze[i][j];
}
}
dp[1][1] = maze[1][1];
for (int i = 2; i <= n; i++) dp[i][1] = dp[i - 1][1] + maze[i][1];
for (int j = 2; j <= m; j++) dp[1][j] = dp[1][j - 1] + maze[1][j];
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= m; j++) {
dp[i][j] = max(dp[i - 1][j] + maze[i][j], dp[i][j - 1] + maze[i][j]);
dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + maze[i][j]);
}
}
cout << dp[n][m];
}
풀이방법
dp를 이용해서 각 경로마다 얻을 수 있는 사탕의 최댓값을 갱신한다
고민과정
X
'algorithm > Dynamic Programming' 카테고리의 다른 글
[C++] BOJ 9095 1, 2, 3 더하기 (0) | 2021.08.07 |
---|---|
[C++] BOJ 1932 삼각형 (0) | 2021.08.07 |
[C++] BOJ 1010 다리 놓기 (0) | 2021.05.01 |
[C++] BOJ 13301 타일 장식물 (0) | 2021.05.01 |
[C++] BOJ 9625 RIJEČI (BABBA) (0) | 2021.05.01 |