40求调
查看原帖
40求调
1706685
Jimmy_2014楼主2025/6/24 19:46
#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
int w[1005][1005]={0},n,m,ans=0;
const int dj[4]={1,-1,0,0},di[4]={0,0,1,-1};
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			w[i][j]=0;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int l=0;l<4;l++){
				if(i+di[l]>0&&i+di[l]<=n&&j+dj[l]<=m&&j+dj[l]>0&&(a[i+di[l]][j+dj[l]]=='#'||a[i][j]=='#')){
					w[i][j]++;
				}
			}
			if(w[i][j]==0)	ans++;
		}
	}
	long long best=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int sum=0;
			if(a[i][j]=='#'){
				for(int l=0;l<4;l++){
				if(i+di[l]>0&&i+di[l]<=n&&j+dj[l]<=m&&j+dj[l]>0&&w[i+di[l]][j+dj[l]]==1){
					sum++;
				}
				if(w[i][j]==1)	sum++;
			}
			if(sum>best)	best=sum;
			}
		}
	}
	ans+=best;
	cout<<ans<<endl;
	return 0;
}
2025/6/24 19:46
加载中...