1

Gooooogle  •  4个月前


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

void SB(int i, int j) {
	if (i < 0 || j < 0 || i >= n || j >= m) {
		return;
	}
	if (a[i][j] == 1) {
		return;
	}
	a[i][j] = 1;
	SB(i, j - 1);
	SB(i, j + 1);
	SB(i - 1, j);
	SB(i + 1, j);
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {

			scanf("%d", &a[i][j]);
		}
	}
	for (int i = 0; i < n ; i++ ) {
		SB(i, 0);
	}
	for (int i = 0; i < n ; i++ ) {
		SB(i, m - 1);
	}
	for (int j = 0; j < m ; j++ ) {
		SB(0, j);
	}
	for (int j = 0; j < m ; j++ ) {
		SB(n - 1, j);
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (a[i][j] == 0) {
				sb++;
				SB(i, j);
			}
		}
	}
	printf("%d", sb);
	return 0;
}

include <bits/stdc++.h>

using namespace std; int a[310][310] ; int n, m, sb = 0;

void SB(int i, int j) {

if (i < 0 || j < 0 || i >= n || j >= m) {
	return;
}
if (a[i][j] == 1) {
	return;
}
a[i][j] = 1;
SB(i, j - 1);
SB(i, j + 1);
SB(i - 1, j);
SB(i + 1, j);

}

int main() {

scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++) {
	for (int j = 0; j < m; j++) {

		scanf("%d", &a[i][j]);
	}
}
for (int i = 0; i < n ; i++ ) {
	SB(i, 0);
}
for (int i = 0; i < n ; i++ ) {
	SB(i, m - 1);
}
for (int j = 0; j < m ; j++ ) {
	SB(0, j);
}
for (int j = 0; j < m ; j++ ) {
	SB(n - 1, j);
}
for (int i = 0; i < n; i++) {
	for (int j = 0; j < m; j++) {
		if (a[i][j] == 0) {
			sb++;
			SB(i, j);
		}
	}
}
printf("%d", sb);
return 0;

}



评论:

请先登录,才能进行评论