//向大佬求解
//我的代码错在哪里#include<iostream>
#include<cstring>
//dp
int a[5000][5000]={0};
int dp[5000][5000]={0};
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<5000;i++)
{
for(int j=0;j<5000;j++)
{
a[i][j]=dp[i][j]=-9999999999;
}
}
for(int i=1;i<=2*n-1;i++)
{
if(i<=n)
{
for(int j=1;j<=n+i-1;j++)
{
cin>>a[i][j];
}
}
else if(i>n)
{
for(int j=i-n+1;j<=2*n-1;j++)
{
cin>>a[i][j];
}
}
}
for(int j=1;j<=2*n-1;j++)
{
for(int i=1;i<=2*n-1;i++)
{
if(i==1&&j==1)
{
dp[1][1]=a[1][1];
continue;
}
if(a[i][j]>-9999999)
{
dp[i][j]=a[i][j]+max(dp[i-1][j-1],max(dp[i-1][j],dp[i][j-1]));
}
}
}
cout<<dp[2*n-1][2*n-1]<<endl;
}
全部评论
(0) 回帖