//很显然这是一道和算法导论上装配线上的类似的题目 可以采用类似的解法
//我们从下往上走
//对于 max【x】【y】其最大值 只能来自于 max【x-1】【y】 或 max【x-1】【y+1】
//
#include<stdio.h>
#define max(a,b) (a>b?a:b)
int max[102][102],data[102][102];
int main()
{
int n, i ,j;
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<=i;j++)
scanf("%d",&data[i][j]);
}
//刚开始 最后一行的最大值 极为其本身
for(i = n-1;i>=0;i--)
max[n-1][i] = data[n-1][i];
for(i=n-2;i>=0;i--){
for(j=0;j<=i;j++){
max[i][j]=max(max[i+1][j],max[i+1][j+1])+data[i][j];
}
}
printf("%d\n",max[0][0]);
return 0;
}
posted on 2009-08-05 17:08
付翔 阅读(1002)
评论(2) 编辑 收藏 引用