例题一、数字三角形(POJ1163)
在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。
三角形的行数大于1小于等于100,数字为0 -99
#include
#include
int N;
#define max(a,b) (a>b? a:b)
int d[101][101];
int maxsum(int i,int j){
if(i==N)
return d[i][j];
else
return max(maxsum(i+1,j),maxsum(i+1,j+1))+d[i][j];
}
void main(){
int i,j;
scanf("%d",&N);
for(i=1;i<=N;i++)
for(j=1;j<=i;j++)
scanf("%d",&d[i][j]);
printf("%d\t",maxsum(1,1));
}