50pts求条
查看原帖
50pts求条
1085701
zzgj1235楼主2024/12/17 18:20

3,4,6,10,12,14,17,18,19,21WA

#include<bits/stdc++.h>
using namespace std;
long long dpu[1005][1005],dpd[1005][1005],a[1005][1005];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    if(n==1&&m==1){
        cout<<a[1][1];
        return 0;
    }
    for(int j=1;j<=m;j++){
        for(int i=1;i<=n;i++){
            if(i==1&&j==1){
                dpd[1][1]=a[1][1];
            }else if(i==1){
                dpd[i][j]=dpd[i][j-1]+a[i][j];
            }else if(j==1){
                dpd[i][j]=dpd[i-1][j]+a[i][j];
            }else{
                dpd[i][j]=max(dpd[i-1][j],dpd[i][j-1])+a[i][j];
            }
        }
        for(int i=n;i>=1;i--){
        	if(i==n&&j==1){
                dpu[i][j]=a[i][j];
            }else if(i==n){
                dpu[i][j]=dpd[i][j-1]+a[i][j];
            }else if(j==1){
                dpu[i][j]=dpu[i+1][j]+a[i][j];
            }else{
                dpu[i][j]=max(dpu[i+1][j],dpd[i][j-1])+a[i][j];
            }
        }
        for(int i=1;i<=n;i++){
            dpd[i][j]=max(dpu[i][j],dpd[i][j]);
        }
    }
    cout<<dpd[n][m];
    return 0;
}
2024/12/17 18:20
加载中...