基础搜索题 最少转弯问题
来源:互联网 发布:关于清朝的纪录片 知乎 编辑:程序博客网 时间:2024/05/21 11:33
最少转弯问题
时间限制: 1 Sec 内存限制: 128 MB题目描述
给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯次数就等于行进方向的改变(从水平到垂直或从垂直到水平)的次数。例如:如图,最少的拐弯次数为5。
输入
第1行:n m
第2至n+1行:整个地图地形描述(0:空地;1:高山),
如(图) 第2行地形描述为:1 0 0 0 0 1 0
第3行地形描述为:0 0 1 0 1 0 0
……
第n+2行:x1 y1 x2 y2 (分别为起点、终点坐标)
输出
输出s (即最少的拐弯次数)
样例输入
5 71 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 01 3 1 7
样例输出
5
一道简单的广度搜索题,唯一变化的是要在结构体中加入方向这一变量,来求最后的答案。
#include <cstring>#include <iostream>#include <cstdio>#include <queue>using namespace std;struct node{ int x,y,cnt; char dc; //结构体中加入判断方向的变量}; int n,m;int fd[110][110]; //判断路径是否走过的标记queue<node>p; int bfs(int x1,int y1,int x2,int y2){ node no; no.x=x1; no.y=y1; no.cnt=0; no.dc='0'; a=0,b=0,l=0,r=0; fd[x1][y1]=1; //入队列 p.push(no); while(!p.empty()) { int x,y,k; char ch; node z; z=p.front(); p.pop(); x=z.x; y=z.y; k=z.cnt; ch=z.dc; if(x==x2&&y==y2)return k; for(int i=-1;i<=1;i++) for(int j=-1;j<=1;j++) { if(i!=j&&i+j!=0) { if(x+i>=1&&x+i<=n&&y+j>=1&&y+j<=m) { if(fd[x+i][y+j]==0) { char chh; z.x=x+i; z.y=y+j; if(i==1)chh='b'; //判断方向 if(i==-1)chh='a'; if(j==1)chh='r'; if(j==-1)chh='l'; fd[z.x][z.y]=1; if(chh==ch||ch=='0')z.cnt=k; else z.cnt=k+1; z.dc=chh; p.push(z); } } } } } }int main(){ while(scanf("%d%d",&n,&m)==2) { int x1,x2,y1,y2; int O; memset(fd,0,sizeof(fd)); while(!p.empty())p.pop(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&O); if(O==1)fd[i][j]=1; } } scanf("%d%d%d%d",&x1,&y1,&x2,&y2); printf("%d\n",bfs(x1,y1,x2,y2)); } return 0;}
阅读全文
0 0
- 基础搜索题 最少转弯问题
- 【搜索】最少转弯问题(初级版)
- 最少转弯问题
- 【a802】最少转弯问题
- 【a802】最少转弯问题
- 最少转弯问题
- 最少转弯问题
- 搜索中的转弯问题
- 最少转弯
- 最少转弯
- 最少转弯
- SSL JudgeOnline 2277——最少转弯问题
- SDAU 搜索专题 05 转弯问题
- 【9018p1434】最少转弯
- 最少转弯问题(又是BFS,但就喜欢用矩阵)
- bfs转弯问题
- SSL_2325 最小转弯问题
- 转弯
- POJ 2676 Sudoku
- 【C语言】结构体
- 最小生成树
- 技术问题问答总结
- 无外网情况下Centos7--为Hadoop集群搭建Sentry(上)
- 基础搜索题 最少转弯问题
- POJ 1141-Brackets Sequence(区间DP)
- hdu 2046 骨牌铺方格
- 小媛在努力
- 弱题(循环矩阵)
- 模拟实现不受限制的字符串函数(strcat、strcpy、strcmp)
- BZOJ 2243 染色 线段树+树链剖分
- 杭电acm 4557非诚勿扰(排序+字符串)
- JavaScript断点调试高级教程