const int maxn=100;
int a[maxn][maxn];
int dp[maxn][maxn];
int main()
{
int n;
cin>>n;
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++) dp[n][i]=a[n][i];
for(int i=n-1;i>0;i--)
for(int j=1;j<=i;j++)
dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
cout<<dp[1][1]<<endl;
return 0;
}
/*
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
*/
数字三角形问题(简单动态规划)-算法设计与分析
最新推荐文章于 2023-09-12 21:24:22 发布