天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > 老鼠走迷宫C语言程序 电子老鼠走迷宫(广搜)WA

老鼠走迷宫C语言程序 电子老鼠走迷宫(广搜)WA

时间:2022-01-22 23:31:03

相关推荐

老鼠走迷宫C语言程序 电子老鼠走迷宫(广搜)WA

#include

#include

using namespace std;

void bfs();

int x1,y1,x2,y2;

int used[50][50]={0} ;

int s[20][20]={0};

char route[20][20]={0};

queue x;

queue y;//在这里需要考虑一个二维的情况,故需要给x,y各一个队列

int main()

{

int i,j;

cin>>x1>>y1>>x2>>y2;

x.push(x1);

y.push(y1);//相当于识别起始位置

for(i=1;i<=12 ;i++)

{

for(j=1;j<=12;j++)

{

cin>>route[i][j];

}

}

bfs();

return 0;

}

void bfs()

{

int i,j,flag=1;

while(flag == 1)

{

if(s[x2][y2] != 0) //在没走到终点之前,终点位置的数值始终为0

//一旦发现不是0了,说明计数已经“计到了”这个位置。当前数值也就代表了步数

//因为采取了广搜,所以不必担心,首先到达终点的情况肯定是“最小步数”的情况

{

cout<

break;

}

x1=x.front();

y1=y.front();//(x1,y1)始终为当前所在的位置

x.pop();

y.pop();

used[x1][y1]=1;//走过的不能重复走了!!!!! 之前忘了这个,结果走了很多重复的路!!!!!!!!!!!

if(route[x1-1][y1] == '.'&&used[x1-1][y1]==0)//向上走得通

{

x.push(x1-1);

y.push(y1);

s[x1-1][y1]=s[x1][y1]+1;

}

if(route[x1+1][y1] == '.'&&used[x1+1][y1]==0)//向下走得通

{

x.push(x1+1);

y.push(y1);

s[x1+1][y1]=s[x1][y1]+1;

}

if(route[x1][y1-1] == '.'&&used[x1][y1-1]==0)//向左走得通

{

x.push(x1);

y.push(y1-1);

s[x1][y1-1]=s[x1][y1]+1;

}

if(route[x1][y1+1] == '.'&&used[x1][y1+1]==0)//向右走得通

{

x.push(x1);

y.push(y1+1);

s[x1][y1+1]=s[x1][y1]+1;

}

}

}

千里之行,始于足下。

如果觉得《老鼠走迷宫C语言程序 电子老鼠走迷宫(广搜)WA》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。