90分求调,必关,不喜勿喷
查看原帖
90分求调,必关,不喜勿喷
1188279
LHX3102楼主2025/6/27 21:26
#include<bits/stdc++.h>
using namespace std;
char a[1002][1002];
int iii[2] = {1,-1};
bool c(int n,int m,int nn,int mm)
{
	for(int ii=0;ii<2;ii++)
	{
		if(n+iii[ii] >= 0 && n+iii[ii] < nn)
		{
			if(a[n+iii[ii]][m] == '#') return 0;
		}
	}
	for(int ii=0;ii<2;ii++)
	{
		if(m+iii[ii] >= 0 && m+iii[ii] < mm)
		{
			if(a[n][m+iii[ii]] == '#') return 0;
		}
	}
	return 1;
}
int main()
{
	int n,m,t=0;
	cin>>n>>m;
	for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j];
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i][j] == '.' && c(i,j,n,m)) t++;
		}
	}
	int ans = 0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			int r = 0;
			if(a[i][j]=='#')
			{
				a[i][j]='.';
				if(c(i,j,n,m)) r++;
				for(int ii=0;ii<2;ii++)
				{
					for(int jj=0;jj<2;jj++)
					{
						if(i+iii[ii]<0 || i+iii[ii]>=n || j+iii[jj]<0 || j+iii[jj]>=m) continue;
						if(a[i+iii[ii]][j+iii[jj]]=='.' && c(i+iii[ii],j+iii[jj],n,m)) r++;
					}
				}
				a[i][j] = '#';
			}
			ans = max(ans,r);
		}
	}
	cout<<ans+t;
	return 0;
}
2025/6/27 21:26
加载中...