Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
65045 2020姚瑶 NOIP2020(CSP) 普及:第四题 方格取数(number) C++ 解答错误 90 100 MS 4196 KB 823 2022-10-02 17:56:43

Tests(18/20):


#include<bits/stdc++.h> using namespace std; int n,m; int a[1002][1002]; int dp1[1002],dp2[1002];//从上往下走,从上往上走 int dp[1002]; int main() { scanf("%d%d",&n,&m); int i,j; for(i=1; i<=n; i++) for(j=1; j<=m; j++) scanf("%d",&a[i][j]); dp[1]=a[1][1]; for(i=2; i<=n; i++) dp[i]=dp[i-1]+a[i][1]; for(i=2; i<=m; i++) { dp1[1]=dp[1]+a[1][i]; for(j=2; j<=n; j++) dp1[j]=max(dp[j],dp1[j-1])+a[j][i]; dp2[n]=dp[n]+a[n][i]; for(j=n-1; j>=1; j--) dp2[j]=max(dp[j],dp2[j+1])+a[j][i]; for(j=1; j<=n; j++) dp[j]=max(dp1[j],dp2[j]); /*for(j=1; j<=n; j++) cout<<dp1[j]<<endl; cout<<endl; for(j=1; j<=n; j++) cout<<dp2[j]<<endl; cout<<endl; for(j=1; j<=n; j++) cout<<dp[j]<<endl; cout<<endl;*/ } printf("%d",dp[n]); return 0; }


测评信息: