按照大佬说的动态规划思路,用迭代写的通过了😐。 int main(){ int N; cin>>N; vector<vector<int>> ta(N, vector<int>(N, 0)); vector<vector<int>> gold(ta); // 处理输入 for(int i=0;i<N;++i){ for(int j=0;j<=i;++j){ cin>>ta[i][j]; } } // 最后一层的金币最大值就是塔的值 for(int j=N-1;j>=0;--j){ gold[N-1][j]=ta[N-1][j]; } // 上面每一层某位置的金币最大值都等于左下和右下金币最大值再加上当前位置塔的金币值 for(int i=N-2;i>=0;--i){ for(int j=i;j>=0;--j){ gold[i][j]=max(gold[i+1][j],gold[i+1][j+1])+ta[i][j]; } } cout<<gold[0][0]<<endl; }