The Triangle
Time Limit: 1000MS
Memory Limit: 10000K
Description
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1)
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
题目大意
从上到下,要么往下,要么往右,怎么走最大。
思路:
本来想用dfs的。。。想了想还是dp好写。
dp[i][j]中i是行数,j是i行的第几个就好了
#include
#include
#include
using namespace std;
int a[105][105];
int dp[105][105];
int res, r;
int main(){
scanf("%d", &r);
for (int i = 1; i <= r; i++){
for (int j = 1; j <= i; j++){
scanf("%d", &a[i][j]);
}
}
dp[1][1] = a[1][1];
for (int i = 2; i <= r; i++){
for (int j = 1; j <= i; j++){
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j];
}
}
for (int i = 1; i <= r; i++){
res = max(res, dp[r][i]);
}
printf("%d\n", res);
return 0;
}