//广搜
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node{
int x;
int y;
};
struct node queue[100];//队列实现广搜
int head=0;
int tail=0;
int map[51][51];//存图
int book[51][51];//标记走过的点
int n;//图的规模
int startx,starty;//降落点
int next[4][2]={
{-1,0},{1,0},{0,-1},{0,1}};
void bfs(int x,int y,int color)
{
if(head>=tail)
return;
int xnext,ynext;
for(int i=0;i<4;i++){
xnext=x+next[i][0];
ynext=y+next[i][1];
if(xnext>=1&&xnext<=n&&ynext>=1&&ynext<=n&&map[xnext][ynext]!=0&&book[xnext][ynext]==0){
map[xnext][ynext]=-1;
book[xnext][ynext]=1;
queue[tail].x=xnext;
queue[tail].y=ynext;
tail++;
}
}
head++;
bfs(queue[head].x,queue[head].y,color);
啊哈算法搜索应用之宝岛探险(BFS和DFS)
最新推荐文章于 2022-03-15 18:12:31 发布
本文通过C语言实现广度优先搜索(BFS)和深度优先搜索(DFS)来解决宝岛探险问题。利用队列实现BFS,递归实现DFS,遍历地图并标记已访问的节点,最终输出可到达区域。
摘要由CSDN通过智能技术生成