tle,mle,wa全占了..............
查看原帖
tle,mle,wa全占了..............
865793
better_Z楼主2023/6/7 14:28
#include<iostream>
#include<cstdio>
int n,m,t;
int ans=0,s=-1;
int a[21][21];
bool b[21][21];
int py[8][2]={{1,1},{-1,-1},{1,-1},{-1,1},{0,1},{1,0},{-1,0},{0,-1}};
void check(int x,int y){
    b[x][y]=1;
    for(int i=0;i<=7;i++){
        int dx=x+py[i][0],dy=y+py[i][1];
        b[dx][dy]=1;
    }
}
void getnone(int ex,int ey){
    b[ex][ey]=0;
    for(int i=0;i<=7;i++){
        int fx=ex+py[i][0],fy=ey+py[i][1];
        b[fx][fy]=0;
    }
}
void dfs(int line,int row){
    if(line>n&&row>m)return;
    if(ans>s)s=ans;
    for(int i=line;i<=n;i++){
        for(int j=row;j<=m;j++){
            if(!b[i][j]){
                ans+=a[i][j];
                check(i,j);
                if(j>m)dfs(line+1,1);
                else dfs(line,i+1);
                ans-=a[i][j];
                getnone(i,j);
            }
        }
    }
}
using namespace std;
int main(){
    cin>>t;
    for(int p=1;p<=t;p++){
      cin>>n>>m;
      for(int i=1;i<=n;i++){
          for(int j=1;j<=m;j++){
              cin>>a[i][j];
          }
      }
      dfs(1,1);
      printf("%d",s);
      puts("");
      s=-1;
    }
    return 0;
}
2023/6/7 14:28
加载中...