蒟蒻求助
查看原帖
蒟蒻求助
1004026
__Charlie_Chen__楼主2023/11/25 11:29

BFS代码AC了,可还是想不明白

BFS代码如下

#include<bits/stdc++.h>\\懒人专用万能头无需解释
using namespace std;
struct node {\\坐标结构体
	int x, y;
} q[30000];
bool s[200][200], p[200][200];\\用bool型变量存储地图,s是地图,p是标记数组
int ans, m, n;
char a;
int c[4][2] = {0, 1, 1, 0, -1, 0, 0, -1};\\方向数组
void bfs(int x, int y) {\\标准BFS模板
	ans++;
	int head = 0, tail = 1, X, Y;
	q[1].x = x;
	q[1].y = y;
	while (head < tail) {
		head++;
		X = q[head].x;
		Y = q[head].y;
		p[X][Y] = 1;
		for (int i = 0; i < 4; i++) {
			int xx = X + c[i][0];
			int	yy = Y + c[i][1];
			if (s[xx][yy] && (!p[xx][yy])) {
				q[++tail].x = xx;
				q[tail].y = yy;
			}
		}
	}
}
int main() {
	cin>>m>>n;
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= n; j++) {
			cin>>a;
			s[i][j] = (a != '0');
		}
	}
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= n; j++) {
			if (s[i][j] && (!p[i][j])) {
				bfs(i, j);
			}
		}
	}
	printf("%d", ans);
	return 0;
}

这里不理解代码第34行

cin>>a;

为什么不能用

scanf("%c",&a);

本蒟蒻刚学了BFS,还不怎么会写,各位神犇见谅

2023/11/25 11:29
加载中...