思路就是从上加到下。 求最后一排数的最大值。 貌似还可以用DP来做。。。不过那东西还不会。。。继续学习。。 #include <stdio.h> #include <string.h> int main() { int sjx[1001][1001]; int i,j,n,pos; int max; int a,b; while (scanf("%d", &n)!=EOF) { memset(sjx,0,sizeof(sjx)); for (i=1;i<=n;i++) for (j=1;j<=i;j++) scanf("%d", &sjx[i][j]); for (i=2;i<=n;i++) { for (j=1;j<=i;j++) { a = sjx[i-1][j-1]+sjx[i][j]; b = sjx[i-1][j]+sjx[i][j]; if (a>b) sjx[i][j] = a; else sjx[i][j] = b; } } max = 0; for (i=1;i<=n;i++) { if (max<sjx[n][i]) max = sjx[n][i]; } printf("%d/n", max); } return 0; }