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;
- }