原題鏈接 http://poj.org/problem?id=1163
Description
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1)
Input
Output
Sample Input
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Sample Output
30
Source Code
/*
簡單DP f(i, j) = Max{ f(i,j)+f(i+1,j) , f(i,j)+f(i+1,j+1)}
*/
#include <iostream>
using namespace std;
int nums[101][101];
int main() {
int i, j, num;
while(scanf("%d", &num) != EOF) {
memset(nums, 0, sizeof(nums));
for (i = 1; i <= num; i++) {
for (j = 0; j < i; j++) {
scanf("%d", &nums[i - 1][j]);
}
}
int left, right;
for (i = num - 2; i >=0; i --) {
for (j = 0; j <= i; j++) {
if (nums[i + 1][j] > nums[i + 1][j + 1]) {
nums[i][j] +=nums[i + 1][j];
} else {
nums[i][j] +=nums[i + 1][j + 1];
}
}
}
printf("%d\n", nums[0][0]);
}
}