为什么只有80分?求讲解.
查看原帖
为什么只有80分?求讲解.
1398350
w2024wys楼主2025/6/14 10:32

代码:

#include<bits/stdc++.h> 
using namespace std;
long long n,m,sum,ssr=0,s;
char a[1010][1010];
int dd(long long z,long long y){
	if(z>=1 && y>=1 && z!=n+1 && y!=m+1){
		if((a[z][y+1]=='.' || a[z][y+1]==a[0][0])  && (a[z][y-1]=='.' || a[z][y-1]==a[0][0])  && (a[z-1][y]=='.' || a[z-1][y]==a[0][0])  && (a[z+1][y]=='.' || a[z+1][y]==a[0][0]) ){
			return 1;
		}else{
			return 0;
		}
	}
	return 0;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int l=1;l<=m;l++){
			cin>>a[i][l];
		}
	}
	for(int i=1;i<=n;i++){
		for(int l=1;l<=m;l++){
			if(a[i][l]=='.' && dd(i,l)==1 ){
				sum++;
			}else{
				if(a[i][l]=='#'){
					a[i][l]='.';
					s=dd(i,l+1)+dd(i,l-1)+dd(i-1,l)+dd(i+1,l)+dd(i,l);
					ssr=max(ssr,s);
					a[i][l]='#';
				}
			}
		}
	}
	cout<<ssr+sum;
	return 0;
}
2025/6/14 10:32
加载中...