#include <iostream> using namespace std; int main(){ int n,i,j; int a[101][101] = {0}; cin>>n; //从塔顶往塔底输入 for(i = 0;i < n;i++){ //读入第i行的内容 for(j = 0;j <= i;j++){ cin>>a[i][j]; } } //从塔底的某个数,往塔顶走,倒推,a[i][j] 存放到达第i层的最大值 //它所能走得路线:正上方a[i+1][j],右上方a[i+1][j+1] 2条线 for(i = n - 2;i >= 0;i--){ for(j = 0;j <= i;j++){ if(a[i + 1][j] > a[i + 1][j + 1]){ a[i][j] = a[i][j] + a[i + 1][j]; }else{ a[i][j] = a[i][j] + a[i + 1][j + 1]; } } } cout<<a[0][0]<<endl; } /************************************************************** Problem: 1216 User: admin Language: C++ Result: Accepted Time:19 ms Memory:2072 kb ****************************************************************/