HyeLog
๋ฐฑ์ค_11048_์ด๋ํ๊ธฐ ๋ณธ๋ฌธ
๐โโ๏ธ ๋ฌธ์
https://www.acmicpc.net/problem/11048
11048๋ฒ: ์ด๋ํ๊ธฐ
์ค๊ท๋ NรM ํฌ๊ธฐ์ ๋ฏธ๋ก์ ๊ฐํ์๋ค. ๋ฏธ๋ก๋ 1ร1ํฌ๊ธฐ์ ๋ฐฉ์ผ๋ก ๋๋์ด์ ธ ์๊ณ , ๊ฐ ๋ฐฉ์๋ ์ฌํ์ด ๋์ฌ์ ธ ์๋ค. ๋ฏธ๋ก์ ๊ฐ์ฅ ์ผ์ชฝ ์ ๋ฐฉ์ (1, 1)์ด๊ณ , ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ซ ๋ฐฉ์ (N, M)์ด๋ค. ์ค๊ท๋
www.acmicpc.net
๐งฉ ์๊ณ ๋ฆฌ์ฆ
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (DP)
๐ก ์์ด๋์ด
D[i][j] = (1, 1)์์ ์์ํด์ (i, j)์ ๋์ฐฉํ์ ๋ ์ฌํ ๊ฐ์์ ์ต๋๊ฐ.
(i, j)์ ๋์ฐฉํ์ ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ (D[i][j]๋ฅผ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ 3๊ฐ์ง):
case 1) (1, 1) โ (i, j - 1) โ (i, j) ์ด๋, D[i][j] = D[i][j - 1] + A[i][j]
case 2) (1, 1) โ (i - 1, j) โ (i, j) ์ด๋, D[i][j] = D[i - 1][j] + A[i][j]
case 3) (1, 1) โ (i - 1, j - 1) โ (i, j) ์ด๋, D[i][j] = D[i - 1][j - 1] + A[i][j]
โ D[i][j] = max(case 1, case 2, case 3) + A[i][j]
ํ์ง๋ง, ๋๊ฐ์ ์ด๋์ ์ค๋ฅธ์ชฝโ์๋ / ์๋โ์ค๋ฅธ์ชฝ ๋ ๋ฐฉ๋ฒ๋ณด๋ค ํญ์ ์ฌํ ๊ฐ์๊ฐ ์ ๊ฑฐ๋ ๊ฐ์ผ๋ฏ๋ก ๊ณ ๋ คํ์ง ์์๋ ๋จ (A[i][j] โฅ 0 ์ผ ๋๋ง). ๋ฐ๋ผ์, case 3 ์ ์ ๊ฑฐ ๊ฐ๋ฅ.
๐ฉโ๐ป ์ฝ๋
#include <iostream>
#include <algorithm>
using namespace std;
int a[1001][1001];
int d[1001][1001];
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// input
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
// dp
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
d[i][j] = max(d[i - 1][j], d[i][j - 1]) + a[i][j];
}
}
// output
cout << d[n][m] << '\n';
return 0;
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1978_์์ ์ฐพ๊ธฐ (0) | 2022.12.08 |
---|---|
๋ฐฑ์ค_11060_์ ํ ์ ํ (0) | 2022.08.02 |
๋ฐฑ์ค_17142_์ฐ๊ตฌ์3 (0) | 2022.07.14 |
๋ฐฑ์ค_17141_์ฐ๊ตฌ์2 (0) | 2022.07.14 |
๋ฐฑ์ค_2234_์ฑ๊ณฝ (0) | 2022.07.08 |