HDU - 1728 逃离迷宫 【BFS】
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=1728
思路
BFS
一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0
我们的标记不是简单的标记
我们给每个已经访问过的位置 第一次访问时 我们将此时的转弯次数 赋值给它
当下一次 有其他状态 又来访问的时候,我们判断一下 之前已经标记的转弯次数 是比当前的大于等于吗 如果是 那么这个点 就可以继续走下去 如果不是 目前的这个状态就可以不要 相当于剪枝了
有几个坑点
输入的时候 坐标是从1-N 1-M 的
然后输入起始坐标的时候,, x 代表列 y 代表行
AC代码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<map>
#include<set>
#include<string>
#include<list>
#include<stack>
#include <queue>#define CLR(a, b) memset(a, (b), sizeof(a))using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int maxn = 1e2 + 5;int Move[4][2] = // up 0 down 1 left 2 right 3
{-1, 0, // up1, 0, // down0,-1, // left0, 1, // right
};int n, m;int G[maxn][maxn];
int v[maxn][maxn];int sx, sy, ex, ey, limit;int ans;struct node
{int x, y;int step;int dis;
};bool ok(int x, int y, int step)
{if (x < 0 || x >= n || y < 0 || y >= m || G[x][y] == 0 || v[x][y] < step)return false;return true;
}void bfs()
{queue <node> q;node tmp;tmp.step = 0;v[sx][sy] = 1;for (int i = 0; i < 4; i++){tmp.x = sx + Move[i][0];tmp.y = sy + Move[i][1];tmp.dis = i;if (ok(tmp.x, tmp.y, tmp.step)){q.push(tmp);v[tmp.x][tmp.y] = tmp.step;}}while (!q.empty()){node u = q.front(), V;q.pop();if (u.x == ex && u.y == ey){if (u.step <= limit){ans = 1;return;}}if (u.step > limit)continue;for (int i = 0; i < 4; i++){V.x = u.x + Move[i][0];V.y = u.y + Move[i][1];if (u.dis != i)V.step = u.step + 1;else V.step = u.step;V.dis = i;if (ok(V.x, V.y, V.step)){q.push(V);v[V.x][V.y] = V.step;}}}}void init()
{CLR(G, 0);CLR(v, 0x3f);
}int main()
{int t;cin >> t;while (t--){init();scanf("%d%d", &n, &m);char c;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){scanf(" %c", &c);if (c == '.')G[i][j] = 1;elseG[i][j] = 0;}}scanf("%d%d%d%d%d", &limit, &sy, &sx, &ey, &ex);sx--, sy--, ex--, ey--;ans = 0;bfs();if (ans)printf("yes\n");elseprintf("no\n");}}
转载于:https://www.cnblogs.com/Dup4/p/9433105.html
HDU - 1728 逃离迷宫 【BFS】相关推荐
- hdu 1728 逃离迷宫 (bfs)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU - 1728 逃离迷宫(bfs)
题目链接:点击查看 题目大意:给出起点和终点和最多的拐弯次数k,问拐弯次数能否在小于等于k的情况下从起点到达终点 题目分析:bfs,不过和以往的不太一样,以往的bfs都是每次加入一个点,而这个题目的限 ...
- HDU 1728 逃离迷宫(BFS的优化)
这一题,有两个地方需要注意:(除了题目令人窒息的行列的x y设置) ①转弯如何判断? 需要给转弯的方向赋值.通常,我们在节点向四个方向延伸的时候,喜欢这样 int nextx[4]={0,0,-1,1 ...
- HDU 1728 逃离迷宫【BFS】
题意:给出一个起点,一个终点,规定的转弯次数,问能否在规定的转弯次数内到达终点--- 这一题是学(看)习(题)的(解)@_@ 主要学了两个地方 一个是剪枝,如果搜到的当前点的转弯次数小于该点turn数 ...
- hdu 1728 逃离迷宫(dFS+优先队列)
求转弯最少的走路方式!!!! #include<stdio.h> #include<string.h> #include<queue> using namespac ...
- HDU 1728 逃离迷宫
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位 ...
- hdoj 1728 逃离迷宫
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU ACM 1728 逃离迷宫 (广搜BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意:给出一张图,转弯数k,起点(x1,y1),(x2,y2)判断能不能最多只转k个弯时从起点走到终点 输 ...
- hdu_1728_逃离迷宫(bfs)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意:走迷宫,找最小的拐角 题解:对BFS有了新的理解,DFS+剪枝应该也能过,用BFS就要以拐 ...
- 逃离迷宫 ( BFS /DFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
最新文章
- React-Todos
- 【Python-ML】SKlearn库层次聚类凝聚AgglomerativeClustering模型
- 当前操作系统缺少黑体等字体_从零开始开发一个操作系统
- 利用Cache防止同一帐号重复登录
- 【Elasticsearch】我们如何将 100 秒的 elasticsearch 查询优化为不到一秒。
- struts2 s:property/标签的使用--输出时间格式转换
- Amazon验证码机器算法识别
- L1 - 闭包和原型链
- Leetcode 5182.删除一次得到子数组最大和
- 向英雄联盟生涯致敬,三十行Python代码爬取LOL官网英雄皮肤图片
- Makefile中的@
- 巫师3储物箱在哪_巫师三孤岩宝箱在哪 | 手游网游页游攻略大全
- iOS 获取汉字【简体中文】笔画数
- ES2015 Module(模块)
- 苹果的移动设备上跑flash
- 常见端口扫描原理总结
- 【Android】HAL层浅析
- 求一圈中留下的最后一个人
- 什么是recovery time和removal time?
- 你应该知道的setTimeout秘密
热门文章
- 可能有用的篡改检测常识
- C语言----整钱换零钱问题。把1元兑换成1分,2分,5分的硬币,共有多少种不同的兑换方法?(同理n元硬币的兑换方法呢?n元由用户输入)
- 阳明心学解析——心学本质关系连接
- cad没有命令输入框_cad2017命令输入框没了
- 三星推出体积更小的1亿像素图像传感器产品线
- Unity【Live Capture】- 关于人脸捕捉的解决方案(一)
- f检验matlab计算,F检验(F-Test)计算公式与在线计算器_三贝计算网_23bei.com
- Java中的求和公式_Sympy codegen:求和索引函数
- 对于上海交通大学网络安全专业21考研823的一些总结以及22考研专业课如何准备的想法
- KEGG信号通路富集分析