50求调,必关
查看原帖
50求调,必关
1008234
byk_ALEX楼主2025/7/22 13:36

代码:

#include<bits/stdc++.h>
using namespace std;
long long n, m;
char a[10005][10005];
long long maxz = 0, maxi = 1, maxj = 1, w = 0;
bool kai_ken(int i, int j){
//	if(i == 3 && j == 9)
//	cout << a[i + 1][j] << " ";
//	cout << a[4][2] << " ";
//	cout << i + 2 << " ";
	w = 0;
	if(a[i + 1][j] == '.' && i + 1 <= n && j + 1 <= m + 1 && j - 1 >= 0){
		if(a[i + 2][j] == '.' && a[i][j + 1] == '.' && a[i][j - 1] == '.'){
			w++;
		}
	}
	if(a[i - 1][j] == '.' && i - 1 >= 1 && j + 1 <= m + 1 && j - 1 >= 0){
		if(a[i - 2][j] == '.' && a[i][j + 1] == '.' && a[i][j - 1] == '.'){
	//		cout << 2 << " ";
			w++;
		}
	}
	if(a[i][j + 1] == '.' && j + 1 <= m && i - 1 >= 0 && i + 1 <= n + 1){
		if(a[i + 1][j] == '.' && a[i - 1][j] == '.' && a[i][j + 2] == '.'){
	//		cout << 3 << " "; 
			w++;
		}
	}
	if(a[i][j - 1] == '.' && j - 1 >= 1 && i - 1 >= 0 && i + 1 <= n + 1){
		if(a[i + 1][j] == '.' && a[i - 1][j] == '.' && a[i][j - 2] == '.'){
	//		cout << 4 << " ";
			w++;
		}
	}
//	cout << w << " ";
	if(w == 4){
		maxi = i;
		maxj = j;
		return 1;
	}
	if(w > maxz){
		maxz = w;
		maxi = i;
		maxj = j;
	}
	return 0;
}
int main(){
	cin >> n >> m;
	long long s = 0;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			cin >> a[i][j];
			if(i == 1)
				a[i - 1][j] = '.';
			if(i == n)
				a[i + 1][j] = '.';
			if(j == 1)
				a[i][j - 1] = '.';
			if(j == m)
				a[i][j + 1] = '.';
		}
	}
 //   if(i == 1 && j == 1){
 //       
 //   }
	bool flag = 0;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			if(a[i][j] == '#'){
				if(kai_ken(i, j) == 1){
					flag = 1;
					break;
				}
			}
		}
		if(flag)
			break;
	} 
//	cout << a[4][2] << " ";
	a[maxi][maxj] = '.';
//	cout << maxi << " " << maxj << " ";
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			if(a[i + 1][j] == '.' && a[i - 1][j] == '.' && a[i][j + 1] == '.' && a[i][j - 1] == '.' && a[i][j] != '#'){
			//	cout << i << " " << j << "\n";
				s++;
			}
		}
	}
//	for(int i = 1; i <= n; i++){
//		cout << a[i][m + 1] << " ";
//	}
	cout << s;
	return 0; 
}
2025/7/22 13:36
加载中...