挺简单的 , 从下向上将 下一行的 数字向上 一行 加 然后 将 这一行的 再向上 + 加到 最上面的时候 最上面的 就是 最大的值
#include<stdio.h> #include<algorithm> using namespace std; int a[101][101]; int max(int x,int y) { return x>y?x:y; } int main() { int i,j,n,t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<=i;j++) { scanf("%d",&a[i][j]); // 输入数塔 完成 } } for(i=n-2;i>=0;i--) { for(j=i;j>=0;j--) { a[i][j]=max(a[i+1][j]+a[i][j],a[i+1][j+1]+a[i][j]); } } printf("%d ",a[0][0]); } return 0; }