求助 0分
查看原帖
求助 0分
360444
230syh楼主2022/3/5 10:55
#import<bits/stdc++.h>
using namespace std;
short n,m,a[50][50],ans;
bool vis[50][50]={true};
 bool in(int x,int y){
    return x<n&&y<m&&vis[x][y];
}
void dfs(int x,int y,int op,short sum){
    if(op==0){
        sum+=a[x][y];
        vis[x][y]=false;
        if(x==n-1&&y==m-1){
            if(sum>=ans){
                ans=sum;
                dfs(x,y,1,sum);
            }
            return;
        }
        if(in(x+1,y))
            dfs(x+1,y,0,sum);
        if(in(x,y+1))
            dfs(x,y+1,0,sum);
    }
    else{
        cout<<1;
        sum+=a[x][y];
        vis[x][y]=false;
        if(x==0&&y==0){
            if(sum>=ans){
                ans=sum;
            }
            return;
        }
        if(in(x-1,y))
            dfs(x-1,y,1,sum);
        if(in(x,y-1))
            dfs(x,y-1,1,sum);
    }
}
int main(){
    scanf("%hd%hd",&n,&m);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            scanf("%hd",&a[i][j]);
    dfs(0,0,0,0);
    printf("%hd",ans);
}

2022/3/5 10:55
加载中...