博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3984 迷宫问题(bfs)
阅读量:5325 次
发布时间:2019-06-14

本文共 1681 字,大约阅读时间需要 5 分钟。

嗯...

 

题目链接:

 

这道题属于bfs + 记录路径,在bfs的模板上需要有些更改:

bfs求最短路径有一个优点就是求出来的第一条路径就是最短路径,这与bfs的性质有关...

首先要记录路径的长度,然后要记录每次决策的方向...最后输出时从起点开始将记录下来的决策走一遍然后接着输出即可...

 

AC代码:

1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 struct node{ 8 int x, y; 9 int s;//路径长度10 int l[50];//每次决策11 };12 13 int g[10][10], vis[10][10];14 int dir[4][2] = {
{-1, 0}, {
1, 0}, {
0, 1}, {
0, -1}};15 16 inline node bfs(){17 queue
q;18 node now, next;19 now.x = 0;20 now.y = 0;21 now.s = 0;22 vis[0][0] = 1;23 q.push(now);24 while(!q.empty()){25 now = q.front();26 q.pop();27 if(now.x == 4 && now.y == 4) return now;28 for(int i = 0; i < 4; i++){29 next.x = now.x + dir[i][0];30 next.y = now.y + dir[i][1];31 if(next.x >= 0 && next.x <= 4 && next.y >= 0 && next.y <= 4 && !g[next.x][next.y] && !vis[next.x][next.y]){32 next.s = now.s + 1;33 next.l[now.s] = i;34 vis[next.x][next.y] = 1;35 q.push(next);36 }37 }38 }39 return now;40 }41 42 int main(){43 for(int i = 0; i < 5; i++){44 for(int j = 0; j < 5; j++){45 scanf("%d", &g[i][j]);46 }47 }48 node ans = bfs();49 int x = 0, y = 0;50 printf("(0, 0)\n");51 for(int i = 0; i < ans.s; i++){52 x += dir[ans.l[i]][0];53 y += dir[ans.l[i]][1];54 printf("(%d, %d)\n", x, y);55 }//根据记录的决策输出56 return 0;57 }
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/11336462.html

你可能感兴趣的文章
struts1和struts2的区别
查看>>
函数之匿名函数
查看>>
shell习题第16题:查用户
查看>>
实验4 [bx]和loop的使用
查看>>
Redis常用命令
查看>>
2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)
查看>>
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
redis cluster 集群资料
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
centos系统python2.7更新到3.5
查看>>
C#类与结构体究竟谁快——各种函数调用模式速度评测
查看>>
我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
查看>>
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>