错了

噢莫加纳加加加  •  7天前


#include <bits/stdc++.h>
using namespace std;
int a[305][305];
int m, n;

void fb(int x, int y) {
	if (x < 1 || y < 1 || x > m || y > n || a[x][y] == 1) {
		return;
	}
	a[x][y] = 1;
	fb(x - 1, y);
	fb(x, y - 1);
	fb(x + 1, y);
	fb(x, y + 1);
}

int main() {
	int ans = 0;
	cin >> m >> n;
	for (int x = 1; x <= m; x++) {
		for (int y = 1; y <= n; y++) {
			cin >> a[x][y];
		}
	}
	for (int x = 1; x <= m; x++) {
		for (int y = 1; y <= n; y++) {
			if (x == 1 || y == 1 || x == m || y == n) {
				fb(x, y);
			}
		}
	}
	for (int x = 1; x <= m; x++) {
		for (int y = 1; y <= n; y++) {
			if (a[x][y] == 0) {
				fb(x, y);
				ans++;
			}
		}
	}
	cout << ans;
	return 0;
}

评论:

请先登录,才能进行评论