问题标题: 酷町堂:@刘景辉

0
0
已解决
杨赟安
杨赟安
初级守护
初级守护
  • #include<iostream>
  • #include<cmath>
  • using namespace std;
  • int a[201][201],dp[201][201];
  • int main() {
  • int m,n,t;
  • cin>>m>>n;
  • for(int i=1;i<=m;i++) {
  • for(int j=1;j<=n;j++) {
  • cin>>a[i][j];
  • }
  • }
  • for(int j=1;j<=n;j++) dp[m][j]=-0x3f3f3f3f;
  • for(int j=n/2;j<=n/2+2;j++) dp[m][j]=a[m][j];
  • for(int i=m;i>=1;i--) {
  • for(int j=1;j<=n;j++) {
  • if(j==1) t=max(dp[i][j],dp[i][j+1]);
  • else if(j==n) t=max(dp[i][j],dp[i][j-1]);
  • else t=max(dp[i][j],max(dp[i][j-1],dp[i][j+1]));
  • if(t==-0x3f3f3f3f) dp[i-1][j]=t;
  • else dp[i-1][j]=t + a[i-1][j];
  • }
  • }
  • int M=-0x3f3f3f3f;
  • for(int j=1;j<=n;j++) {
  • M=max(M,dp[1][j]);
  • }
  • cout<<M;
  • return 0;
  • }

0
0
我要回答