按照大佬说的动态规划思路,用迭代写的通过了😐。 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; }
点赞 评论

相关推荐

06-12 16:23
已编辑
小米_软件开发
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务