#include<bits/stdc++.h>
using namespace std;
long long int r[1001][1001];
long long int dp[1001][1001];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>r[i][j];
}
}
dp[1][1]=r[1][1];
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){
if(j==1){
dp[i][j]=dp[i-1][j]+r[i][j];
}
else if(j==i){
dp[i][j]=dp[i-1][j-1]+r[i][j];
}
else
{
dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+r[i][j];
}
}
}
int Max=-1;
for(int t=1;t<=n;t++){
if(dp[n][t]>Max){
Max=dp[n][t];
}
}
cout<<Max<<'\n';
return 0;
}
捡水果 动态规划入门
最新推荐文章于 2024-07-03 08:15:00 发布