20分求调
查看原帖
20分求调
1490757
yee114514man楼主2025/6/22 15:16
#include<iostream>
using namespace std;
int n,m,sum=0,f=0,x1[4]={1,0,-1,0},y1[4]={0,-1,0,1},cnt=0,ss;
char a[1001][1001]={};
bool check(int x,int y){
    for (int i=0;i<4;i++){
        int nx=x+x1[i],ny=y+y1[i];
        if (nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]=='#') return 0;
    }
    return 1;
}
int main(){
    cin>>n>>m;
    for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin>>a[i][j];
    int sum=0;
    for (int i=1;i<=n;i++) for (int j=1;j<=m;j++){
        if (a[i][j]=='.'&&check(i,j)) sum++;
    }
    for (int x=1;x<=n;x++){
        for (int y=1;y<=m;y++){
            if (a[x][y]=='#'){
                a[x][y]='.';
                cnt=0;
                if (check(x,y)) cnt++;
                for (int i=0;i<4;i++){
                    int nx=x+x1[i],ny=y+y1[i];
                    if (nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]=='.'&&check(nx,ny)) cnt++;
                }
            }
            ss=max(ss,cnt);
            a[x][y]='#';
        }
    }
    cout<<ss+sum;
    return 0;
}

QAQ什么逆天玩意

2025/6/22 15:16
加载中...