求助
  • 板块P1123 取数游戏
  • 楼主DLDZD
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/22 09:19
  • 上次更新2024/8/22 11:33:22
查看原帖
求助
508593
DLDZD楼主2024/8/22 09:19

为司马段错误:

#include<bits/stdc++.h>
using namespace std;
int mp[10][10];
bool f[10][10];
int ax[16]={-2,-2,-2,-2,-2,-1,0,1,2,2,2,2,2,1,0,-1};
int ay[16]={-2,-1,0,1,2,2,2,2,2,1,0,-1,-2,-2,-2,-2};
int n,m;
int yj(int x,int y){
    return (x<1||x>n||y<1||y>m);
}
void fz(int x,int y,bool ff){
    for(int i=x-1;i<=x+1;i++){
        for(int j=y-1;j<=y+1;j++){
            if(yj(i,j)) continue;
            f[i][j]=ff;
        }
    }
}
int num,maxn=-114514;
void dfs(int x,int y){
    num+=mp[x][y];
    maxn=max(maxn,num);
    for(int i=1;i<=16;i++){
        int xx=ax[i]+x,yy=ay[i]+y;
        if(yj(xx,yy)) continue; 
        if(f[xx][yy]) continue;
        fz(xx,yy,1);
        dfs(xx,yy);
        fz(xx,yy,0);
    }
    num-=mp[x][y];
}
signed main(){
    int T=1;
    // cin>>T;
    while(T--){
        memset(mp,0,sizeof(mp));
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>mp[i][j];
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                fz(i,j,1);
                dfs(i,j);
                fz(i,j,0);
            }
        }
        cout<<maxn<<'\n';
    }
    return 0;
}
2024/8/22 09:19
加载中...