给定一个数塔从开头走到最下面,求走过数字之和的最大值 登录后复制 #include<bits/stdc++.h> using namespace std; int n; int a[400][400]; int dp[400][400]; int maxa(int i,int j) { if(dp[i][j]!=-1) { return dp[i][j]; } if(i==1&&j==1) { dp[1][1]=a[1][1]; return a[1][1]; } dp[i][j]=a[i][j]+max(maxa(i-1,j-1),maxa(i-1,j)); return dp[i][j]; } int main() { cin>>n; memset(a,0,160000); memset(dp,-1,160000); for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) cin>>a[i][j]; } int res=0; for(int i=1;i<=n;i++) { res=max(res,maxa(n,i)); } cout<<res; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40. 原创作者: u_16969274 转载于: https://blog.51cto.com/u_16969274/11813451