백준 알고리즘/다이나믹 프로그래밍
백준 11048번 C++
paysmile
2019. 1. 18. 00:39
#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;
}