hdu1728 广搜
提示:每个点可以多次搜索,但是要判断是否是较优解,用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 广搜相关推荐
- Go 分布式学习利器(15) -- Go 实现 深搜和广搜
强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...
- 搜索:广搜 词语阶梯
问题描述以及解决过程如下导图 广搜实现如下 #include <iostream> #include <algorithm> #include <vector> # ...
- [NC23486]小A与小B 双向广搜
题解:这个题属于走迷宫类型问题的一个升级版吧,不同之处在于一秒钟小A走一步,小B可以走两步,这两种事件是同时发生的,所以我们每秒钟让A扩散一步,让B扩散两步. 两个人走过的路径分别用 visited[ ...
- 【图论专题】BFS中的双向广搜 和 A-star
双向广搜 AcWing 190. 字串变换 #include <cstring> #include <iostream> #include <algorithm> ...
- [数据结构] 迷宫问题(栈和队列,深搜和广搜)
代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...
- UVA 122 Trees on the level 二叉树 广搜
题目链接: https://vjudge.net/problem/UVA-122 题目描述: 给你一种二叉树的构造方法, 让你逐层输出二叉树的节点值, 如果不能够则输出"not comple ...
- hrbust 1616 密码锁(广搜)
分析:广搜,每个四位数作为一个状态,从每个状态扩展出其他的几种状态并累加步数之后加入队列. 1 #include <stdio.h> 2 #include <string.h> ...
- [kuangbin] M - Find a way(简单广搜)
题目链接:https://vjudge.net/contest/215603#problem/M 其中三维数组dis将两个广搜合并到了一起 #include<iostream> #incl ...
- hdu5025 状态压缩广搜
题意: 悟空要救唐僧,中途有最多就把钥匙,和最多五条蛇,要求就得唐僧并且拿到所有种类的钥匙(两个1只拿一个就行),拿钥匙i之前必须拿到钥匙i-1,打蛇多花费一秒,问救出唐僧并且拿到所有种类 ...
最新文章
- 如何创建一个用户、授权操作k8s集群的过程?
- eolinker 相关
- 完美刷机显示云服务器,完美刷机显示云服务器
- 微服务系列:MicroProfile和Apache TomEE
- mysql 数据舍取_mysql取舍索引
- PHP String
- CM3中数据传输对齐/非对齐方式
- 网络协议分析(Network Protocol Analysis)之IPCP、认证协议PAP与CHAP
- 2017-2018-1 20155229 实验五 《通讯协议设计》
- matlab快速将几幅图片放在一幅图片
- css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决
- # C语言程序设计第二次作业——顺序结构
- 关于Mac安装破解软件,未知来源消失的问题
- 直通车内测“定时上架”功能,商家可以提前锁定爆款了!
- 百度地图加载过慢问题
- Linus Torvalds的最新电脑配置
- SVAC 2.0安全系统组成
- VS2015无法新建项目错误及解决方法:无法打开“……/VC?VCWizards/default.vcxproj”因为此版本的应用程序不支持其项目类型(.vcxproj)
- Scratch软件编程等级考试二级——201909
- python参考书目_Python 阅读书目推荐
热门文章
- Dubbo 3.0 预览版解读,6到飞起~
- 假笨说-协助美团kafka团队定位到的一个JVM Crash问题
- Linux思维导图整理,你确定不收藏?
- Spring Cloud构建微服务架构(一)服务注册与发现
- python2.7解释器安装教程_Python解释器安装教程以及环境变量配置
- html pie标签,css3pie怎么用?
- studio项目上传svn服务器,SVN在AndroidStudio中的使用(一),SVN安装配置和项目检出更新...
- Facebook基于数据中心的机器学习实践
- 关于数据中心的选址大全
- python dbscan 如何确定eps参数_如何选择eps和minPts(DBSCAN算法的两个参数)以获得有效结果?...