码迷,mamicode.com
首页 > 其他好文 > 详细

用queue函数写广搜

时间:2017-04-29 20:01:22      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:函数   return   struct   scanf   tin   print   printf   queue   ext   

以走迷宫需要的最少步数的代码为例

#include<stdio.h>
#include<string.h>
#include<queue>

using namespace std;

struct Note{
int x,y,s;
};
int a[51][51],book[51][51];

void bfs(Note h, Note t)
{
int Next[4][2] = {0};
int i,tx,ty;
Note head,tail;
queue<Note> q;
q.push(h);
book[h.x][h.y] = 1;
while(!q.empty()){
head = q.front();
q.pop();
for(i = 0; i < 4; i++){
tx = head.x + Next[i][0];
ty = head.y + Next[i][1];
if(tx < 0 || tx >= t.x || ty < 0 || ty >= t.y)
continue;
if(a[tx][ty] == 0 && book[tx][ty] == 0){
tail.x = tx;
tail.y = ty;
q.push(tail);
book[tx][ty] = book[head.x][head.y] + 1;
}
if(tx == t.x && ty == t.y)
return ;
}
}
}

int main()
{
Note head,tail;
int i,j,n,m;
while(scanf("%d%d",&n,&m) != EOF){
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
scanf("%d",&a[i][j]);
memset(book,0,sizeof(book));
scanf("%d%d%d%d",&head.x,&head.y,&tail.x,&tail.y);
head.s = 0;
bfs(head,tail);
printf("%d\n",book[tail.x][tail.y]);
}
return 0;
}

用queue函数写广搜

标签:函数   return   struct   scanf   tin   print   printf   queue   ext   

原文地址:http://www.cnblogs.com/didideblog/p/6785818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!