意甲冠军:不解释。

策略:如果;

这个问题也可以用深宽搜索搜索中使用。我曾经写过,使用深层搜索。最近的学校范围内的搜索,拿这个问题来试试你的手。

代码:

#include<stdio.h>
#include<string.h>
#include<queue>
using std::queue;
bool vis[20][20];
const int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};//方向
int map[9][9] = {
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,0,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,
};
struct Node{int pos[2];//pos[0] = x, pos[1] = yint step;
};
Node st, en;
bool match(Node a, Node b)  //推断是不是到达终点
{return (a.pos[0] == b.pos[0]&&a.pos[1] == b.pos[1]);
}
int bfs()
{queue<Node> q;int i, j;memset(vis, 0, sizeof(vis)); q.push(st);vis[st.pos[0]][st.pos[1]] = 1;int ans = 0x3f3f3f3f;  //初始化while(!q.empty()){Node u = q.front();if(match(u, en)){    //wa了一次是由于没有推断终点是不是起点ans = u.step;break;}for(i = 0; i < 4; i ++){Node v;v.pos[0] = u.pos[0]+dir[i][0];v.pos[1] = u.pos[1]+dir[i][1];v.step = u.step+1;if(match(v, en)){if(v.step < ans)ans = v.step;}else if(!vis[v.pos[0]][v.pos[1]]&&!map[v.pos[0]][v.pos[1]]){q.push(v);vis[v.pos[0]][v.pos[1]] = 1;}}q.pop();}return ans;
}
int main()
{int t;scanf("%d", &t);while(t --){scanf("%d%d%d%d", &st.pos[0], &st.pos[1], &en.pos[0], &en.pos[1]);st.step = 0;printf("%d\n", bfs());}return 0;
}

主题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=58

转载于:https://www.cnblogs.com/mengfanrong/p/4560505.html

NYOJ 58 步数最少 【BFS】相关推荐

  1. 从起始点到目标点的最短步数(BFS)

    从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在古老的魔兽传说中,有两个军团,一 ...

  2. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  3. NYOJ ~ 58 ~ 最小步数(BFS)

    代码如下: #include<bits/stdc++.h> using namespace std; const int MAXN = 15; struct Node { int x,y, ...

  4. NYOJ ~ 58 ~ 最小步数(DFS)

    代码如下: #include<stdio.h> #include<iostream> #include<algorithm> #include<string. ...

  5. 南阳58--最小步数(BFS)

    最少步数 时间限制: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 ...

  6. 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...

  7. 2139=数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    1 #include<stdio.h> 2 #include<string.h> 3 int map[1000][1000],visit[1000]; 4 int step,m ...

  8. sdut_2139 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...

  9. BFS:走出迷宫并输出最小步数

    目录 背景 描述 例子 思路 完整代码 收获总结 背景 描述 给定一个n*m大小的迷宫,其中*代表不可通过的墙壁,而"."代表墙壁,S表示起点,T代表重点.移动过程中,如果当前位置 ...

最新文章

  1. [Struts2应用开发] JSON的应用
  2. csu 1757(贪心或者树状数组)
  3. JZOJ__Day 1【NOIP普及模拟】MATRIX
  4. IOS原生地图与高德地图
  5. Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
  6. 图文存储常识:单机、集中、分布式、云、云原生存储
  7. Pytest参数选项自由执行测试用例详解(二)
  8. 令人惊讶的手机端实时 4K 风格迁移!谷歌又出牛文
  9. Linux学习入门--make学习总结
  10. python的dict()字典数据类型的方法详解以及案例使用
  11. [现代控制理论]8_LQR控制器_simulink
  12. Matpower疑惑解答
  13. Sql Server 还原数据库并重命名
  14. 可视化html css布局,高效可视化网页布局(ViewDiv)
  15. sla的三个服务等级_联络中心的服务水平标准是什么?
  16. 黑苹果开机界面的启动项设置
  17. 班级网页制作 HTML个人网页设计 我的班级网站设计与实现 大学生简单班级静态HTML网页设计作品 DIV布局班级网页模板代码 DW学生校园网站制作成品下载
  18. 【教程】利用github学生认证免费使用CLion一年
  19. keil软件仿真逻辑分析仪出现了Unknown Signal
  20. sqljdbc4.jar和sqljdbc.jar下载

热门文章

  1. Google Play市场考察报告-2
  2. visual svn 搭建
  3. Windows 8实例教程系列 - 开篇
  4. 电商价格战 谁才是最大受益者
  5. 【note】PAT甲级题目中的单词整理
  6. AIX和LINUX主机 CPU 内存 磁盘使用率监控
  7. SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别
  8. java中对象与字节数组相互转换
  9. 如何开发与设计一个爆款小游戏
  10. easyui datagrid 让某行复选框置灰不能选