[C] 纯文本查看 复制代码 #include<bits/stdc++.h>
using namespace std;
int main()
{
int n=3;
int a[3][4]={
1, -1, 3 ,2,
2 ,-1, 4, -1,
-2, 2, -3 ,-1
}
int dp[4][5][3]={0};
//0 自下而上 1-向下 2 向右
for(int i=1;i<=3;i++)
{
dp[i][1][1]=dp[i-1][1][1]+a[i][1];
dp[i][1][0]=a[i][1];
dp[i][1][2]=a[i][1];
}
for(int i=1;i<=3;i++)
{
for(int j=2;j<=4;j++)
{
dp[i][j][1]=max(dp[i-1][j][1],dp[i-1][j][2])+a[i][j];
dp[i][j][2]=max(max(dp[i][j-1][1],dp[i][j-1][2]),dp[i][j-1][0])+a[i][j];
}
}
for(int i=3;i>=1;i--)
{
for(int j=2;j<=4;j++)
{
dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][2])+a[i][j];
}
}
cout<<max(max(dp[n][m][1],dp[n][m][2]),dp[n][m][0]);
return 0;
} |