题目:

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

思路:

        用广搜,之后回溯统计转弯次数。

代码:

#include<cstdio>
int b,f,m,n,a[101][101],state[11000][3],s,father[11000],x,y,px,py,best;
short dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
char c;
bool check(int x,int y)
{if (1>x||x>n||1>y||y>m||a[x][y]==1) return false;return true;
}
void print(int x)//回溯
{if (father[x]==0) return;else print(father[x]);if(state[x][1]-state[father[x]][1]==0) f=2; else f=1;if(father[father[x]]==0) b=f;if(b!=f) s++,b=f;
}
void bfs()
{int tail,head;state[1][1]=x;state[1][2]=y;state[1][3]=0;tail=1;head=0;do{head++;for (int i=1;i<=4;i++){if(check(state[head][1]+dx[i],state[head][2]+dy[i])){tail++;father[tail]=head;state[tail][1]=state[head][1]+dx[i];state[tail][2]=state[head][2]+dy[i];a[state[tail][1]][state[tail][2]]=1;    if (state[tail][1]==px&&state[tail][2]==py){print(tail);tail=0;}         }}}while (head<tail);
}
int main()
{scanf("%d",&n);scanf("%d",&m);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)scanf("%d",&a[i][j]);scanf("%d%d%d%d",&x,&y,&px,&py);bfs();printf("%d",s);
}

SSL_2325 最小转弯问题相关推荐

  1. SSL_2325【最小转弯问题】

    最小转弯问题 题目 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山.平地可以通过,高山则不能.现在你处在地图的(x1,y1)这块平地,问:你至少需要拐 ...

  2. 【SSL】2325最小转弯问题

    [SSL]2325最小转弯问题 Time Limit:1000MS Memory Limit:65536K Description 给出一张地图,这张地图被分为 n×m(n,m<=100)个方块 ...

  3. SSL P2325 最小转弯

    题目:http://blog.csdn.net/qq_35786326/article/details/78836913 题意:  求在一个矩阵中的最短路径方案中的转弯次数. 分析:   原身:Oli ...

  4. 2020-11-17最小转弯半径计算

    一.最小转弯半的概念 虚线是最小转弯半径,最外圆是最小通过圆.不要搞混乱了这两个概念. 二.汽车知识                                                   ...

  5. 杭电1728bfs逃离迷宫java实现

    Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有 ...

  6. hdu1728--------坑爹啊

    尼玛,就因为没发现'yes'写成'yrs'.整整让哥找了一个小时的bug.有没有..........此刻,内流满面! 分析: 开始以为是单纯的BFS,结果WA无数次!! 后来分析后发现是要找到不超过转 ...

  7. 【bfs】WJ的逃离

    WJ(J)的逃离 题目大意: 有一个n×m的矩阵,*是不可走的,0是可走的,求1,1到n,m的最小转弯次数 原题: 题目描述 当WJ醒来时,发现自己被困在一个地图的左上角,幸好WJ有张图,并了解到出口 ...

  8. ROS——Teb算法的优化

    一.简介 "TEB"全称Time Elastic Band(时间弹性带)Local Planner,该方法针对全局路径规划器生成的初始轨迹进行后续修正(modification), ...

  9. 单车模型下方向盘转角与转弯半径关系

    1. 单车模型: 上图中:L是轴距Wheel_Base,Theta是车轮转向角度Wheel_Angle,R是转向半径Turn_Radius 2. 变量定义: 方向盘角度:Steer_Angle 方向盘 ...

最新文章

  1. 换一种方式编写 Spring MVC 接口
  2. php 单用户登录,Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用...
  3. Substitution控件MethodName无法取到Session的解决办法
  4. bat文件打开cmd并且运行cmd命令
  5. mysql怎么实现的主从复制_【mysql】mysql实现主从复制
  6. 【重点】LeetCode 135. Candy
  7. java 极客漫画_java/php/net/python漫画管理系统设计
  8. ubuntu服务器版无线网卡,ubuntu server 16.10 启用无线网卡
  9. Java游戏吉他英雄_《吉他英雄:现场》《摇滚乐队4》横向对比:各有所长!
  10. 在中国搞定粉丝秘笈:如何创造粉丝经济
  11. 金蝶apusic9.0版本安装包
  12. c语言成绩与平均分问题,用C语言编程平均分数
  13. VS2015编译适用于XP系统sp3的dll全过程-无需vs2015运行库
  14. 中缀向后缀转换表达式
  15. pyinstaller第三方库打包文件“ValueError”:找不到文件
  16. nginx添加ssl证书
  17. android jni (jni_onload方式)
  18. 1506_TC275参考手册阅读笔记_ED芯片
  19. 【面经】华为车BU面经
  20. AggregatingMergeTree

热门文章

  1. 一年级课程表(3月7日-3月11日)
  2. python如何录音_python实现录音功能
  3. Ansible安装使用
  4. 子网怎么算?IP地址(A,B,C,D,E类地址),子网,子网掩码,容纳主机20台,网络号,主机号
  5. FPGA学习之深入浅出玩转FPGA
  6. sdcc man阅读笔记(一)——sdcc 的介绍与安装
  7. 谷歌HDRplus研读(一)
  8. utf8与unicode转换
  9. python全栈学习笔记
  10. VS2010 编写代码时的光标变成了黑块,黑块选中了字,再输入的时候就会替换掉那个黑块选中的字