- 问题引入
- 数字三角形
- 洛谷链接: https://www.luogu.com.cn/problem/P1216.
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N][N];
int n;
int dp[N][N];//记录从i,j出发的最大值
int main(){
cin>>n;
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>=1;i--){
for(int j=1;j<=i;j++){
dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1]);
}
}
cout<<dp[1][1];
return 0;
}