样例过了 答案是对的 求助 避讳管
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
int n,m,sum,Max,flag;
char a[MAXN][MAXN];
pair<int,int> ZaWuZuoBiaoLieBiao[MAXN*MAXN]; // 改用pair存储坐标
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
if(a[i][j]!='.'){
ZaWuZuoBiaoLieBiao[flag++] = {i,j};
}
}
}
for(int x=0;x<flag;x++){
int ox = ZaWuZuoBiaoLieBiao[x].first;
int oy = ZaWuZuoBiaoLieBiao[x].second;
a[ox][oy]='.';
sum=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='.'){
bool valid = true;
if(i>0 && a[i-1][j]=='#') valid=false;
if(i<n-1 && a[i+1][j]=='#') valid=false;
if(j>0 && a[i][j-1]=='#') valid=false;
if(j<m-1 && a[i][j+1]=='#') valid=false;
if(valid) sum++;
}
}
}
if(sum>Max) Max=sum;
a[ox][oy]='#';
}
printf("%d\n",Max);
return 0;
}