80分 求debug(仅给代码不找错的勿扰)
查看原帖
80分 求debug(仅给代码不找错的勿扰)
946050
congtianyi_1203楼主2025/6/24 18:03
//测试1
#include <bits/stdc++.h>
using namespace std;
int n, m, ans = 0, first_max_ans = 0;
int a[1010][1010];
void init() {
	for (int k = 1; k <= n; k++) {
		for (int c = 1; c <= m; c++) {
			if (a[k - 1][c] == 1 and a[k + 1][c] == 1 and a[k][c - 1] == 1 and a[k][c + 1] == 1 and a[k][c] == 1) {
				first_max_ans++;
			}
		}
	}
}
int main() {
	cin >> n >> m;
	for (int i = 0; i <= n + 1; i++) {
		for (int j = 0; j <= m + 1; j++) {
			a[i][j] = 1;
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			char s;
			cin >> s;
			if (s == '#') a[i][j] = 0;
			else a[i][j] = 1;
		}
	}
	init();
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (a[i][j] == 1) continue;
			a[i][j] = 1;
			int sum = 0;
			sum = first_max_ans;
			if (i == 1 and j == 1){
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
				if (a[i+1][j+1] == 1 and a[i-1][j+1] == 1 and a[i][j+1+1] == 1 and a[i][j+1-1] == 1 and a[i][j+1] == 1) {
					sum++;
				}
			}
			else if (i == 1 and j == m){
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
				if (a[i+1][j-1] == 1 and a[i-1][j-1] == 1 and a[i][j-1+1] == 1 and a[i][j-1-1] == 1 and a[i][j-1] == 1) {
					sum++;
				}
			}
			else if (i == n and j == 1){
				if (a[i-1+1][j] == 1 and a[i-1-1][j] == 1 and a[i-1][j+1] == 1 and a[i-1][j-1] == 1 and a[i-1][j] == 1) {
					sum++;
				}
				if (a[i+1][j+1] == 1 and a[i-1][j+1] == 1 and a[i][j+1+1] == 1 and a[i][j+1-1] == 1 and a[i][j+1] == 1) {
					sum++;
				}
			}
			else if (i == n and j == m){
				if (a[i-1+1][j] == 1 and a[i-1-1][j] == 1 and a[i-1][j+1] == 1 and a[i-1][j-1] == 1 and a[i-1][j] == 1) {
					sum++;
				}
				if (a[i+1][j-1] == 1 and a[i-1][j-1] == 1 and a[i][j-1+1] == 1 and a[i][j-1-1] == 1 and a[i][j-1] == 1) {
					sum++;
				}
			}
			else if (i == 1 and j != 1 and j != m){
				if (a[i+1][j-1] == 1 and a[i-1][j-1] == 1 and a[i][j-1+1] == 1 and a[i][j-1-1] == 1 and a[i][j-1] == 1) {
					sum++;
				}
				if (a[i+1][j+1] == 1 and a[i-1][j+1] == 1 and a[i][j+1+1] == 1 and a[i][j+1-1] == 1 and a[i][j+1] == 1) {
					sum++;
				}
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
			}
			else if (i == n and j!= 1 and j!= m){
				if (a[i+1][j-1] == 1 and a[i-1][j-1] == 1 and a[i][j-1+1] == 1 and a[i][j-1-1] == 1 and a[i][j-1] == 1) {
					sum++;
				}
				if (a[i+1][j+1] == 1 and a[i-1][j+1] == 1 and a[i][j+1+1] == 1 and a[i][j+1-1] == 1 and a[i][j+1] == 1) {
					sum++;
				}
				if (a[i-1+1][j] == 1 and a[i-1-1][j] == 1 and a[i-1][j+1] == 1 and a[i-1][j-1] == 1 and a[i-1][j] == 1) {
					sum++;
				}
			}
			else if (i != 1 and i != n and j == 1){
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
				if (a[i-1+1][j] == 1 and a[i-1-1][j] == 1 and a[i-1][j+1] == 1 and a[i-1][j-1] == 1 and a[i-1][j] == 1) {
					sum++;
				}
				if (a[i+1][j+1] == 1 and a[i-1][j+1] == 1 and a[i][j+1+1] == 1 and a[i][j+1-1] == 1 and a[i][j+1] == 1) {
					sum++;
				}
			}
			else if (i!= 1 and i!= n and j == m){
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
				if (a[i-1+1][j] == 1 and a[i-1-1][j] == 1 and a[i-1][j+1] == 1 and a[i-1][j-1] == 1 and a[i-1][j] == 1) {
					sum++;
				}
				if (a[i+1][j-1] == 1 and a[i-1][j-1] == 1 and a[i][j-1+1] == 1 and a[i][j-1-1] == 1 and a[i][j-1] == 1) {
					sum++;
				}
			}
			else{
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
				if (a[i+1][j-1] == 1 and a[i-1][j-1] == 1 and a[i][j-1+1] == 1 and a[i][j-1-1] == 1 and a[i][j-1] == 1) {
					sum++;
				}
				if (a[i+1+1][j] == 1 and a[i+1-1][j] == 1 and a[i+1][j+1] == 1 and a[i+1][j-1] == 1 and a[i+1][j] == 1) {
					sum++;
				}
				if (a[i+1][j+1] == 1 and a[i-1][j+1] == 1 and a[i][j+1+1] == 1 and a[i][j+1-1] == 1 and a[i][j+1] == 1) {
					sum++;
				}
			}
			if (a[i][j] == 1 and a[i+1][j] == 1 and a[i-1][j] == 1 and a[i][j+1] == 1 and a[i][j-1] == 1) {
				sum++;
			}
			ans = max(ans, sum);
			a[i][j] = 0;
		}
	}
	cout << ans;
	return 0;
}
2025/6/24 18:03
加载中...