提示:每个点可以多次搜索,但是要判断是否是较优解,用visit数组保存每个点的最优解,即最少转弯次数。

#include<iostream>
#include<cstdio>
#include<queue>
#include<memory.h>
using namespace std;struct node{int x,y,direction;int turn;};int tnum,si,sr,ei,er,h,l;char map[101][101];int visit[101][101];#define reset(f,n) memset(f,0,sizeof(f));int dire[4][2]={{0,1},{1,0},{0,-1},{-1,0}};void bfs(){int i,r,t;queue<node> qlist;node head;head.x=si-1;head.y=sr-1;head.direction=-1;head.turn=0;visit[si-1][sr-1]=0;qlist.push(head);while(!qlist.empty()){node nownode=qlist.front();qlist.pop();int k=4;while(k--){i=nownode.x+dire[k][0];r=nownode.y+dire[k][1];//   cout<<i<<" "<<r<<endl;if(map[i][r]=='.'&&i<h&&i>=0&&r<l&&r>=0){if(nownode.direction!=-1&&nownode.direction!=k){t=nownode.turn+1;}elset=nownode.turn;if(t>tnum)continue;          if(i==ei-1&&r==er-1){//cout<<temp.x<<" "<<temp.y<<" "<<temp.turn<<" "<<temp.direction<<" ";cout<<"yes"<<endl;return;}if(visit[i][r]>=t){node temp;temp.x=i;temp.y=r;temp.direction=k;temp.turn=t;qlist.push(temp);visit[i][r]=t;//cout<<i<<" "<<r<<endl;
                }    }}}cout<<"no"<<endl;return;}    int main(){int n;int i,r;cin>>n;while(n--){reset(visit,0);cin>>i>>r;h=i;l=r;for(int i1=0;i1<i;i1++)for(int r1=0;r1<r;r1++){cin>>map[i1][r1];visit[i1][r1]=50;}cin>>tnum>>sr>>si>>er>>ei;bfs();}   return 0;}    

转载于:https://www.cnblogs.com/shit/archive/2012/08/02/2619769.html

hdu1728 广搜相关推荐

  1. Go 分布式学习利器(15) -- Go 实现 深搜和广搜

    强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...

  2. 搜索:广搜 词语阶梯

    问题描述以及解决过程如下导图 广搜实现如下 #include <iostream> #include <algorithm> #include <vector> # ...

  3. [NC23486]小A与小B 双向广搜

    题解:这个题属于走迷宫类型问题的一个升级版吧,不同之处在于一秒钟小A走一步,小B可以走两步,这两种事件是同时发生的,所以我们每秒钟让A扩散一步,让B扩散两步. 两个人走过的路径分别用 visited[ ...

  4. 【图论专题】BFS中的双向广搜 和 A-star

    双向广搜 AcWing 190. 字串变换 #include <cstring> #include <iostream> #include <algorithm> ...

  5. [数据结构] 迷宫问题(栈和队列,深搜和广搜)

    代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...

  6. UVA 122 Trees on the level 二叉树 广搜

    题目链接: https://vjudge.net/problem/UVA-122 题目描述: 给你一种二叉树的构造方法, 让你逐层输出二叉树的节点值, 如果不能够则输出"not comple ...

  7. hrbust 1616 密码锁(广搜)

    分析:广搜,每个四位数作为一个状态,从每个状态扩展出其他的几种状态并累加步数之后加入队列. 1 #include <stdio.h> 2 #include <string.h> ...

  8. [kuangbin] M - Find a way(简单广搜)

    题目链接:https://vjudge.net/contest/215603#problem/M 其中三维数组dis将两个广搜合并到了一起 #include<iostream> #incl ...

  9. hdu5025 状态压缩广搜

    题意:       悟空要救唐僧,中途有最多就把钥匙,和最多五条蛇,要求就得唐僧并且拿到所有种类的钥匙(两个1只拿一个就行),拿钥匙i之前必须拿到钥匙i-1,打蛇多花费一秒,问救出唐僧并且拿到所有种类 ...

最新文章

  1. 如何创建一个用户、授权操作k8s集群的过程?
  2. eolinker 相关
  3. 完美刷机显示云服务器,完美刷机显示云服务器
  4. 微服务系列:MicroProfile和Apache TomEE
  5. mysql 数据舍取_mysql取舍索引
  6. PHP String
  7. CM3中数据传输对齐/非对齐方式
  8. 网络协议分析(Network Protocol Analysis)之IPCP、认证协议PAP与CHAP
  9. 2017-2018-1 20155229 实验五 《通讯协议设计》
  10. matlab快速将几幅图片放在一幅图片
  11. css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决
  12. # C语言程序设计第二次作业——顺序结构
  13. 关于Mac安装破解软件,未知来源消失的问题
  14. 直通车内测“定时上架”功能,商家可以提前锁定爆款了!
  15. 百度地图加载过慢问题
  16. Linus Torvalds的最新电脑配置
  17. SVAC 2.0安全系统组成
  18. VS2015无法新建项目错误及解决方法:无法打开“……/VC?VCWizards/default.vcxproj”因为此版本的应用程序不支持其项目类型(.vcxproj)
  19. Scratch软件编程等级考试二级——201909
  20. python参考书目_Python 阅读书目推荐

热门文章

  1. Dubbo 3.0 预览版解读,6到飞起~
  2. 假笨说-协助美团kafka团队定位到的一个JVM Crash问题
  3. Linux思维导图整理,你确定不收藏?
  4. Spring Cloud构建微服务架构(一)服务注册与发现
  5. python2.7解释器安装教程_Python解释器安装教程以及环境变量配置
  6. html pie标签,css3pie怎么用?
  7. studio项目上传svn服务器,SVN在AndroidStudio中的使用(一),SVN安装配置和项目检出更新...
  8. Facebook基于数据中心的机器学习实践
  9. 关于数据中心的选址大全
  10. python dbscan 如何确定eps参数_如何选择eps和minPts(DBSCAN算法的两个参数)以获得有效结果?...