#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX = 1001;
int n, m;
int candy[MAX][MAX];
int ans[MAX][MAX];
int calcandynum() {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
ans[i][j] = candy[i][j] + max(ans[i - 1][j],max(ans[i][j - 1], ans[i - 1][j - 1]));
}
}
return ans[n][m];
}
int main(void) {
cin >> n >> m;
memset(candy, 0, sizeof(candy));
memset(ans, 0, sizeof(ans));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> candy[i][j];
ans[i][j] = candy[i][j];
}
}
cout << calcandynum() << endl;
}
'백준 알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
백준 11055번 C++ (0) | 2019.01.21 |
---|---|
백준 1699번 C++ (0) | 2019.01.21 |
백준 2167번 C++ (0) | 2019.01.17 |
백준 11057번 C++ (0) | 2019.01.17 |
백준 9461번 C++ (0) | 2019.01.17 |