Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 34666 | Accepted: 20680 |
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
以下往上走,上面給的保存,下兩個的最大值加本身
最頂上的就是最大值
#include<stdio.h>
int tri[101][101];
int d[101][101];
int max(int a, int b){
if(a > b)
return a;
else
return b;
}
int main()
{
int n;
int i, j;
scanf("%d", &n);
for(i = 1; i <= n; i++)//輸入
for(j = 1; j <= i; j++){
scanf("%d", &tri[i][j]);
d[i][j] = tri[i][j];
}
for(i = n - 1; i >= 1; i--)//從倒數第2層開始找
for(j = 1; j <= i; j++){
d[i][j] = d[i][j] + max(d[i+1][j], d[i+1][j+1]);
}
printf("%d\n", d[1][1]);
return 0;
}