最少步数

时间限制:3000 ms  |  内存限制:65535 KB
难度:4

->   Link  <-

这个题深搜广搜都是可以的,迷宫已经给出了,就看怎么做了;一般起点终点确定用广搜求最短路径问题;

广搜就用到队列了,将起点周围的可行的点都加入队列,在从队列中选取点又重复刚才的操作,直到找到终点;

可以用二维数组存起点到此点的最短路径,起点的路径为0;从队列里拿出一个点,其周围可行的点的路径便是这个点的路径加一,一直广搜到终点

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int INF=0x3f3f3f;
  4. int MAP[9][9]=
  5. {
  6. 1,1,1,1,1,1,1,1,1,
  7. 1,0,0,1,0,0,1,0,1,
  8. 1,0,0,1,1,0,0,0,1,
  9. 1,0,1,0,1,1,0,1,1,
  10. 1,0,0,0,0,1,0,0,1,
  11. 1,1,0,1,0,1,0,0,1,
  12. 1,1,0,1,0,1,0,0,1,
  13. 1,1,0,1,0,0,0,0,1,
  14. 1,1,1,1,1,1,1,1,1,
  15. };
  16. int sx,sy,gx,gy;
  17. typedef pair<int,int>P;
  18. int d[9][9];
  19. int dx[4]={0,0,-1,1};
  20. int dy[4]={1,-1,0,0};
  21. void init()
  22. {
  23. for(int i=0;i<=8;i++)
  24. for(int j=0;j<=8;j++)
  25. d[i][j]=INF;
  26. }
  27. int bfs()
  28. {
  29. queue<P>q;
  30. q.push(P(sx,sy));
  31. d[sx][sy]=0;
  32. while(!q.empty())
  33. {
  34. P p=q.front();
  35. q.pop();
  36. if(p.first==gx&&p.second==gy) break;
  37. for(int i=0;i<4;i++)
  38. {
  39. int xx=p.first+dx[i];
  40. int yy=p.second+dy[i];
  41. if(xx>=0&&xx<=8&&yy>=0&&yy<=8&&!MAP[xx][yy]&&d[xx][yy]==INF)
  42. {
  43. q.push(P(xx,yy));
  44. d[xx][yy]=d[p.first][p.second]+1;
  45. }
  46. }
  47. }
  48. return d[gx][gy];
  49. }
  50. int main()
  51. {
  52. int t;
  53. scanf("%d",&t);
  54. while(t--)
  55. {
  56. scanf("%d%d%d%d",&sx,&sy,&gx,&gy);
  57. init();
  58. printf("%d\n",bfs());
  59. }
  60. return 0;
  61. }

NYOJ-58最少步数,广搜思想!的更多相关文章

  1. NYOJ 58 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  2. [ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)

    Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...

  3. nyoj 1022 最少步数【优先队列+广搜】

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  4. nyoj 613 免费馅饼 广搜

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...

  5. NYOJ 53 最少步数

    题      目    http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=58 思路借鉴   DFS-Deep First Search-深度优先 ...

  6. ny 58 最少步数 (BFS)

    题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=58 就是一道简单的BFS 练习练习搜索,一次AC #include <iostream& ...

  7. 南阳理工 58 最少步数 (DFS)

    描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0, ...

  8. NYOJ 483 Nightmare 【广搜】+【无标记】

    版权声明:长风原创 https://blog.csdn.net/u012846486/article/details/31032479 Nightmare 时间限制:1000 ms  |  内存限制: ...

  9. NYOJ 284 坦克大战 (广搜)

    题目链接 描述 Many of us had played the game "Battle city" in our childhood, and some people (li ...

随机推荐

  1. 窗口Dialog

    Dialog是窗口的意思,它是Window的子类.与frame相比,frame是我们大的窗口,而dialog便是那种弹出来和你说话的对话框. Dialog类的默认布局是BorderLayout Dia ...

  2. 转】R利剑NoSQL系列文章 之 Cassandra

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! R利剑NoSQL系列文章 之 Cassandr ...

  3. TCP协议三次握手和四次握手

    前言 先说一下IP协议和TCP协议,IP协议是无连接的通信协议,IP不会占用两个设备之间通信的线路,IP实际上主要负责将每个数据包路由至目的地,但是IP协议并没有能够确保数据包是否到达,传过去的数据包 ...

  4. Java多线程——进程和线程

    Java多线程——进程和线程 摘要:本文主要解释在Java这门编程语言中,什么是进程,什么是线程,以及二者之间的关系. 部分内容来自以下博客: https://www.cnblogs.com/dolp ...

  5. VUE学习,is 特性,转载来源:https://segmentfault.com/q/1010000007205176/

  6. ES之值类型以及堆和栈

    ES的数据类型: 原始类型(值存在栈内存中): Number.String Boolean.undefined.null charAt(index)返回该index所在的字节,charCodeAt(i ...

  7. 《基于Node.js实现简易聊天室系列之引言》

    简述:这个聊天室是基于Node.js实现的,完成了基本的实时通信功能.在此之前,对node.js和mongodb一无所知,但是通过翻阅博客,自己动手基本达到了预期的效果.技术,不应该是闭门造车,而是学 ...

  8. Android ImageView setImageBitmap 不显示图片

    从sd卡里读出图片后有时调用setImageBitmap(bitmap)方法会显示不出图片,仔细考虑过后原来是加载的图片过大导致的,解决办法为: BitmapFactory.Options op = ...

  9. Apache Tomcat 之路(二 部署web 应用程序)

    1.创建一个webapplication,不论是解压的应用程序包还是war包,在tomcat 上都能部署,这里提供一个简单的web项目:git地址:https://github.com/coderxi ...

  10. java 解析四则混合运算表达式并计算结果

    package ch8; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 四则混合运 ...