Description

定义一个二维数组:

  1. int maze[5][5] = {

  2. 0, 1, 0, 0, 0,

  3. 0, 1, 0, 1, 0,

  4. 0, 0, 0, 0, 0,

  5. 0, 1, 1, 1, 0,

  6. 0, 0, 0, 1, 0,

  7. };

它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

Input

一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。

Output

左上角到右下角的最短路径,格式如样例所示。

Sample Input

  1. 0 1 0 0 0
  2. 0 1 0 1 0
  3. 0 0 0 0 0
  4. 0 1 1 1 0
  5. 0 0 0 1 0

Sample Output

  1. (0, 0)
  2. (1, 0)
  3. (2, 0)
  4. (2, 1)
  5. (2, 2)
  6. (2, 3)
  7. (2, 4)
  8. (3, 4)
    44
  9.  
  10. 问题分析:依然是本应该用dfs的问题但我用的是bfs。。。通过在地图上记录上一个节点并从终点开始走,可以得到路径。
  1. #include "cstdio"
  2. #include "iostream"
  3. #include "queue"
  4.  
  5. using namespace std;
  6. int a[][];
  7. struct person
  8. {
  9. int i;
  10. int j;
  11. };
  12. void abegin()
  13. {
  14. for (int i=;i<;i++)
  15. for (int j=;j<;j++)
  16. cin>>a[i][j];
  17. }
  18. void print()
  19. {
  20. int i=,j=;
  21. printf ("(%d, %d)\n",i,j);
  22. while (i != || j != )
  23. {
  24. switch(a[i][j])
  25. {
  26. case : i--; break;
  27. case : i++; break;
  28. case : j--; break;
  29. case : j++; break;
  30. default: continue;
  31. }
  32. printf ("(%d, %d)\n",i,j);
  33. }
  34. }
  35. void bfs ()
  36. {
  37. queue<person> p;
  38. person fir,sec;
  39. fir.i = ;
  40. fir.j = ;
  41. a[fir.i][fir.j] = ;
  42. p.push(fir);
  43. while (!p.empty())
  44. {
  45. sec = p.front();
  46. p.pop();
  47. if (sec.i> && a[sec.i-][sec.j] < )
  48. {
  49. fir.i=sec.i-;
  50. fir.j=sec.j;
  51. a[fir.i][fir.j] = ;
  52. p.push(fir);
  53. }
  54. if (sec.i< && a[sec.i+][sec.j] < )
  55. {
  56. fir.i=sec.i+;
  57. fir.j=sec.j;
  58. a[fir.i][fir.j] = ;
  59. p.push(fir);
  60. }
  61. if (sec.j> && a[sec.i][sec.j-] < )
  62. {
  63. fir.i=sec.i;
  64. fir.j=sec.j-;
  65. a[fir.i][fir.j] = ;
  66. p.push(fir);
  67. }
  68. if (sec.j< && a[sec.i][sec.j+] < )
  69. {
  70. fir.i=sec.i;
  71. fir.j=sec.j+;
  72. a[fir.i][fir.j] = ;
  73. p.push(fir);
  74. }
  75.  
  76. if (a[][] != )
  77. {
  78. print ();
  79. return;
  80. }
  81. }
  82. }
  83. int main()
  84. {
  85. abegin();
  86. bfs();
  87. return ;
  88. }
  1.  

暑假集训(1)第八弹 -----简单迷宫(Poj3984)的更多相关文章

  1. 暑假集训(4)第八弹——— 组合(hdu1524)

    题意概括:你已经赢得两局,最后一局是N个棋子往后移动,最后一个无法移动的玩家失败. 题目分析:有向无环图sg值游戏,尼姆游戏的抽象表达.得到每个棋子的sg值之后,把他们异或起来,考察异或值是否为0. ...

  2. 暑假集训(2)第八弹 ----- Hero(hdu4310)

    K - Hero Crawling in process... Crawling failed Time Limit:3000MS     Memory Limit:65536KB     64bit ...

  3. 暑假集训(1)第六弹 -----简单计算器(Hdoj1237)

    Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值.   Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算 ...

  4. 暑假集训(3)第四弹 -----Frogger(Poj2253)

    题意梗概:青蛙王子最近喜欢上了另一只经常坐在荷叶上的青蛙公主.不过这件事不小心走漏了风声,被某fff团团员知 道了,在青蛙王子准备倾述心意的那一天,fff团团员向湖泊中注入大量的充满诅咒力量的溶液.这 ...

  5. 暑假集训(2)第七弹 -----今年暑假不AC(hdu2037)

    J - 今年暑假不AC Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64 ...

  6. 暑假集训(1)第三弹 -----Dungeon Master(Poj2251)

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  7. 暑假集训(4)第五弹——— 数论(hdu1222)

    题意概括:那天以后,你好说歹说,都快炼成三寸不烂之舍之际,小A总算不在摆着死人脸,鼓着死鱼眼.有了点恢复的征兆.可孟子这家伙说的话还是有点道理,那什么天将降....额,总之,由于贤者法阵未完成,而小A ...

  8. 暑假集训(4)第七弹——— 组合(hdu1850)

    题意概括:你赢得了第一局.魔鬼给出的第二局是,如果有N堆牌,先手的人有几种可能胜利. 问题分析:尼姆游戏,先得到n堆牌的数量异或和,再将异或和与每一个牌组的数量异或,如果结果小于原牌组数量 则可能++ ...

  9. 暑假集训(4)第六弹——— 组合(poj1067)

    题意概括:上一次,你成功甩掉了fff机械兵.不过,你们也浪费了相当多的时间.fff团已经将你们团团包围,并且逐步 逼近你们的所在地.面对如此危机,你不由得悲观地想:难道这acm之路就要从此中断?虽然走 ...

随机推荐

  1. 伪分布配置完成启动jobtracker和tasktracker没有启动

    检查logs目录下的hadoop-root-jobtracker日志文件 2014-02-26 19:56:06,782 FATAL org.apache.hadoop.mapred.JobTrack ...

  2. Jquery Ajax的时候 老是返回到 error,是因为json格式不正规的原因

    Jquery Ajax的时候 老是返回到 error,是因为json格式不正规的原因: 怪不得不执行,原来我返回的是{success:true,id:1} 这种不规则的字符串,不是严格的json格式, ...

  3. poj 3984 迷宫问题【bfs+路径记录】

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10103   Accepted: 6005 Description ...

  4. 使用AFNetworking 报错提示

    使用AFNetworking 框架 解析数据 报错提示数据请求失败Error Domain=NSCocoaErrorDomain Code=3840 "The operation could ...

  5. google搜索新姿势

    大前提:英文Google→http://www.google.com或http://www.google.cn 第一篇 在搜索框上输入:"indexof/"inurl:lib 再按 ...

  6. 编写高质量代码改善java程序的151个建议——导航开篇

    2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实 ...

  7. Recommended add-ons/plugins for Microsoft Visual Studio

    http://stackoverflow.com/questions/2767/recommended-add-ons-plugins-for-microsoft-visual-studio NUGe ...

  8. 获取WINDOWS特殊文件夹

    const// registry entries for special paths are kept in :  REGSTR_PATH_SPECIAL_FOLDERS   = REGSTR_PAT ...

  9. 神奇的 BlocksKit(1):源码分析(下)

    私有类 _BKObserver _BKObserver 是用来观测属性的对象,它在接口中定义了 4 个属性: @property (nonatomic,readonly,unsafe_unretain ...

  10. Android App用MulticastSocket监听组播,为什么连接到不同路由、在不同手机上跑,有的能收到有的收不到

    ---------------------------!! 转载请注明出处 !!-----------------------   一个项目,利用wifi组播在局域网内发现设备.却发现在有的路由器上能 ...