求助10分
查看原帖
求助10分
777558
Cat_cat楼主2024/1/20 21:19
#include <stdio.h>
using namespace std;
#pragma warning (disable:4996)
short cell[105][105], florr[105][105];
int dx[] = { 0,0,-1,1 }, dy[] = {-1,1,0,0};
int n, m,cnt=0;
void read(short &a) { char b; scanf("%c", &b); if (b == '\n') { scanf("%c", &b);  } a = b - '0'; }
void dfs(int x,int y) {
	int ax, ay;
	for (int i = 0; i <= 3; i++) {
		ax = x + dx[i]; ay = y + dy[i];
		if (!florr[ax][ay] and cell[ax][ay]) {
			florr[ax][ay] = cnt;
			dfs(ax, ay);
		}
	}
}
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++) {
		for (int p = 1; p <= m; p++) {
			read(cell[i][p]);
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int p = 1; p <= m; p++) {
			if (!florr[i][p] and cell[i][p]) {
				cnt++;
				dfs(i, p);
			}
		}
	}
	printf("%d", cnt);
}

在本地跑样例是对的,在这第一个点没过,过了第二个

2024/1/20 21:19
加载中...