#include "stdio.h"
#include "stdlib.h"
int* mm = NULL;
int* max = NULL;
int row;
int opt(){
int i, j;
int start = (1+row-1)*(row-1)/2;
for(i=0; i<row; i++)
max[start+i] = mm[start+i];
for(i=row-1; i>=1; i--){
start = (1+i)*i/2 -1;
for(j=0; j<i; j++){
max[start-j] = mm[start-j];
max[start-j] += max[start-j + i] > max[start-j + i+1] ? max[start-j + i] : max[start-j + i+1];
}
}
return max[0];
}
void main(){
int sum;
int i;
freopen("in.txt", "r", stdin);
while(scanf("%d", &row), row){
sum = (1+row)*row/2;
mm = (int*)malloc(sizeof(int)*sum);
max = (int*)malloc(sizeof(int)*sum);
for(i=0; i<sum; i++)
scanf("%d", mm+i);
printf("%d\n", opt());
}
}
王晓东 算法3-7 数字三角形
最新推荐文章于 2022-09-06 23:40:06 发布