BFS算法助记:建-入-量:头-出-入

【BFS算法助记解析】
大家可以参见问题 https://blog.csdn.net/hnjzsyjyj/article/details/118642238 的代码来理解上面的“BFS算法助记:建-入-量:头-出-入”。
其中,“建-入-量:头-出-入”各字的解析如下:
建:建队
入:入队
量:队中元素个数。作为while循环的条件。
头:队头
出:出队
入:入队

一个记忆场景,“小猫咪在好的洞口,想洞。先用胡子过洞口大小后,然后用头出入洞”。

BFS算法助记:建-入-量:头-出-入_第1张图片

为方便学习,将上面 问题 https://blog.csdn.net/hnjzsyjyj/article/details/118642238 的代码重写如下。大家可将BFS算法助记中的6个字和相应的代码作比对。

#include
using namespace std;
 
struct PII {
	int u;
	int v;
} po;
 
const int maxn=1010;
char g[maxn][maxn];
 
int dx[]= {1,0,-1,0,1,-1,1,-1};
int dy[]= {0,1,0,-1,1,-1,-1,1}; //direction
 
int n,m;
 
void bfs(int x,int y) {
	queue q;
	po.u=x;
	po.v=y;
	q.push(po);
 
	while(q.size()) {
		PII t=q.front();
		q.pop();
		for(int i=0; i<8; i++) {
			int a=t.u+dx[i],b=t.v+dy[i];
			if(a<0 || b<0 || a>=n || b>=m) continue;
			if(g[a][b]=='.') continue;
 
			g[a][b]='.';
 
			po.u=a;
			po.v=b;
			q.push(po);
		}
	}
}
 
int main() {
	cin>>n>>m;
 
	for(int i=0; i>g[i][j];
 
	int ans=0;
 
	for(int i=0; i





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/118642238
https://blog.csdn.net/weixin_43964993/article/details/115579902
https://blog.csdn.net/hnjzsyjyj/article/details/119255867
https://blog.csdn.net/hnjzsyjyj/article/details/118736059


 

你可能感兴趣的:(信息学竞赛,#,搜索算法,BFS)