hdu 1728 bfs 最小拐弯数

拐弯 c++ 拐弯 题目描述: N*N(1<=N<=100)方格中,’x’表示不能行走的格子,’.’表示可以行走的格子。卡门很胖,故而不好转弯。现在要从A点走到B点,请问最少要转90度弯几次? 输入格式: 第一行一个整:N,下面N行,每行N个字符,只出现字符:’.’,’x’,’A’,’B’,表示上面所说的矩阵格子,每个字符后有一个空格。 输出格式: 一个整:最少转弯。如果不能到达,输出-1 样例输入: 3 . x A . . . B x . 样例输出: 2 根据题目,我画 阅读详情

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728

之前没有做过类似这种要最少拐弯数的题目,一般求最少的用bfs应该比较好。。但是之前bfs一般都是用来求最小步数,也就可以标记过走过的点不再走。现在本题要的是最小的拐弯数,所以不能标记走过的点。。需要一个数组来记录当前这个点所需要的最小拐弯数,如果此时这个点的拐弯数比之前该点的拐弯数还小或者等于就更新这个值。遍历全图直到找到解为止。

学习:对于bfs找最优解的变形。明白如何更新拐弯数的,保证最小。

背景:1、WA对于保存拐弯数的数组没有初始化为无穷。2、MLE 对于每个点要进行拐弯数的判定,只有比之前保存的值还小或者等与才入队,否则队列会爆。。3、AC后还进行了一个剪枝,但是忘了将队列中的元素弹出。结果死循环。。。 下次注意最好将队列的头元素取出之后就弹出,避免忘记。。。

判定转弯数的时候一定要是等于号。。这是别人的题解http://972169909-qq-com.iteye.com/blog/1244218  看了图就明白了。。

代码:

//hdu 1728
#include<cstdio>
#include<cstring>
#include<queue>
#define INF 10000000;
using namespace std;
int d1[4] = {0,0,1,-1};
int d2[4] = {1,-1,0,0};
int turn1[101][101];
char map[101][101];
int n,m,k;
int ok;
int sx,sy,ex,ey;
struct state
{
	int x,y;
	int turn;
	int dir;
}cur,next1;
void bfs(state temp)
{
	temp.dir = -1;
	temp.turn = 0;
	turn1[temp.x][temp.y] = 0;
	queue<state> q;
	q.push(
瑞芯微RV1109平台GT911触摸屏驱动调试记录1 很明显这里可以看到系统已经配置了i2c-0、i2c-1、i2c-3、i2c-4、i2c-5,当开机的时候系统已经将相应的I2C节点注册成功了,说明I2C部分是没有问题的。 阅读详情

相关推荐

[SC]SystemC在CPU/GPU验证中的应用(六)

本文提供了一个SystemC学习路线图,包含50个由浅入深的编程实例,涵盖从基础模块到复杂SoC建模的全过程。示例包括:基础模块(时钟、计器)、通道(FIFO、握手)、TLM2.0接口、总线模型(AXI-Lite)、CPU/GPU内核实现、功耗分析、断言验证等。重点展示了SystemC在硬件验证中的关键应用:VCD波形生成、UVM-SystemC框架、Verilog DPI协同仿真、Python集成、NoC路由器和完整SoC建模(CPU+Cache+DRAM+互连)。每个示例提供完整代码和详细注释,建议分

元直的博客 1448

最少转弯问题(turn)

最少转弯问题(turn) 思路:一道标准的广搜题(虽然说深搜好像也能过 ) ,难点在于如何判断转弯。 因为要记录转弯,所以我们就需要在大结构体里在定义一个记录方向的变量f,然后就正常广搜就行了。代码细节还是挺多的,具体注释吧。 AC代码: #include<bits/stdc++.h> using namespace std; int n,m,x1,y,x2,y2,h,t,a[120][120]; int fx[5]={0,1,0,-1,0},fy[5]={0,0,1,0,-1};//转向

Melancholy的博客 2215

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc +开发单片机程序的经验。(这里不解释 gcc 是什么)。

嵌入式技术开发 1804

69.广搜练习:  最少转弯问题(TURN)

问题描述】 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯就等于行进方向的改变(从水平到垂直或从垂直到水平)的次。例如:如图,最少的拐弯为5。 ...

weixin_30908103的博客 778

(C++一本通)最少转弯问题 (经典搜索)

题目描述 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯就等于行进方向的改变(从水平到垂直或从垂直到水平)的次。例如:如图,最少的拐弯为5。 Solution 这个题想了我一...

weixin_30394981的博客 1418

2258: 【搜索】【广度优先】最少转弯问题

给出一张地图,这张地图被分为n×m(n,m

yangrenrui的博客 1107

hdu 1728 bfs 变形最小转弯

//hdu 1728 背景:wa了29次,最后还是借助别人的想法。 第一种想法:把visit组的每一个位置储存为到达当前坐标点所需要的最小转弯,最后对于每个走过的点都是到达该点的最小转弯。这样的最小转弯点又递推下一个最小转弯点.....这样层层递推直到终点。 第二种方法:在普通情况下的bfs是每一步都走距离为1,找出所有的下一步放入队列,然后这样层层递推,而这个题中我们bfs

JIBANCANYANG 1084

hdu1728 逃离迷宫(bfs限制拐弯

http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意:给你一张图,*代表墙,.代表路,给你起点终点坐标和限制的拐弯,求起点是否可以在拐弯内到达终点。 思路:经典的bfs。一般搜索题限制的是走的步,而这题限制的是拐弯。按照我想的土办法,结构体里添加拐弯,每走一步判断是否拐弯,最后把能够到达终点的路线的拐弯统计下来求最

Iguodala的博客 2407

hdu1728 关于bfs的理解

Description   给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转太多弯

Key的博客 465

HDU1728逃离迷宫(BFS+优先队列)

解题思路:对优先队列有了更深的理解。以前写优先队列是针对那种有权的最短路问题,搜出来的必定是道路的花费最优解,我们可以用book标记走过的地方,下次不必要再走;而本题由于用了优先队列,走过的点到底要不要再考虑呢?假设上次到达本点拐弯了1次,而现在却拐弯了2次,当然不要本次的这个方法走,相反如果本次用1次,而上次用2次,就要用本次的方法。如果两次的拐弯一致呢?其实两种都要搜,为什么?因为你进来的方...

小胡同的诗 379

hdu 1728(续)

http://acm.hdu.edu.cn/showproblem.php?pid=1728 参考网上大神的代码后,修改了vit组的用法后就没问题了。。。又学到新东西了 代码似乎不用写得这么长,以后再碰到类似的题再做下更进吧、 vit[max][max]//保存最小拐弯 http://blog.csdn.net/w00w12l/article/details/...

昔拉的博客 181

Hdu 1728 逃离迷宫(BFS

Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1728 这题不是用步限制行走,而是用拐弯限制行走 参考了这篇文章:http://972169909-qq-com.iteye.com/blog/1244218 如果你的代码是优先向右搜索就会出错 红色的线是先搜的,由于最多转一次弯,所以不合题意; 蓝色是后搜的,因为...

weixin_30648587的博客 94

1728 HDU】逃离迷宫(BFS

题目:点击打开题目链接 Problem Description:   给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感...

innocence的博客 582

hdu 1728逃出迷宫

#include #include #include #include using namespace std; const int SIZE = 110; const int dx[] = {1, -1, 0, 0}; const int dy[] = {0, 0, -1, 1}; char maze[SIZE][SIZE]; int v[SIZE][SIZE]

T_T 604

逃离迷宫 HDU1728bfs

和连连看非常相似 都是求转向的BFS 改了一下就上交了。。。 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<iostream> using namespace std; char world...

weixin_30832143的博客 106

HDU1728 逃离迷宫

好久不练搜索,也停更了很长时间。一做题忘了很多注意事项,做了两个小时,发现很多不对的地方,最后发现思路不太对,这种要更换思路。慢慢开始 参考下别人的代码 (1)即一条路走到底,如果出队拓展路径或者一直往前延展且没有被标记那么则step++; (2)遇到已经走过的(已标记),说明这个节点的最小拐弯不是它,经过它,但拐弯不增加,继续往前走。 (3)比较最先一个到达出口的拐弯

但求心安的博客 335

HDU - 1728 逃离迷宫 【BFS

题目传送门 典型的广搜题,但是有坑,在某个方向走的时候要一直走到头,不然的话可能会出现多转弯的情况,主要就是保证从起始点到某一点的转弯最小的 AC代码: #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;s...

君兮月影的博客 276

BFS经典例题合集

经典BFS题目集合

其实我是C先生--的博客 3363

HDU 1728BFS

点击打开链接 注意本题要求的是最小拐弯,如果按照平常的做饭来,每次走过之后就把该点的mark值记为1,以后就不能在走了,但是之后可能出现拐弯较小的。 比如 000000 011110 001000 100011 可能通过红色到绿色,也可能通过蓝色,但是明显通过红色先到,但是蓝色的拐弯少!! 注意输入的顺序! #include"stdio.h" #include

hello_fei 668

BFS小结(持续更新中)

转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove 刚好yobobobo最近做BFS,我也被渲染了,当是复习一下,也总结一下吧,大部分是HDOJ上的BFS题目,由于本人时间有限,会持续更新 HDU 1548 http://acm.hdu.edu.cn/showprobl

窝不是爱酱,喵~~~~ 7025
上一篇: hdu 1253 bfs
下一篇: hdu 1175 bfs 转弯题
liujc_
博客等级 码龄12年 25粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值