6-5 巡逻机器人 uva1600
一开始按照标准bfs来写 标记为二维数组
后来按照三维数组写过了 ps大部分bfs都不会是二维数组搞定!!!
其中有一个bug弄了半个小时。。。
一开始我是先判断!vis【x】【y】【v.c】 再判断方块是否为1 是的话v.c++;否的话归零
但是 这并不科学 到另外一个方块的时候 如果数组下标内容和结构体有关的话 应该先改变状态再判断 就如同肯定是先在u的基础上改变dx dy 再判断v.x v.y 一个道理 不然会超时!因为头不对尾
#include<bits/stdc++.h>
using namespace std; int m1[][];int n,m,chance;
bool vis[][][];
int dx[]={,,,-};
int dy[]={,,-,};
struct node
{
int x,y,d,c;
node(int x=,int y=,int d=,int c=):x(x),y(y),d(d),c(c){}
}; bool inmap(int x,int y)
{
if(x>=&&x<=n&&y>=&&y<=m)return true;
return false; } void bfs()
{ memset(vis,false,sizeof(vis));
node u(,,,);
queue<node>q;
q.push(u);
vis[][][]=true;
while(!q.empty())
{
u=q.front();q.pop(); if(u.x==n&&u.y==m){printf("%d\n",u.d);return;}
for(int i=;i<;i++)
{
node v(u.x+dx[i],u.y+dy[i],u.d+,u.c); if(m1[v.x][v.y])
v.c++;
else v.c=;
if(v.c<=chance&&!vis[v.x][v.y][v.c]&&inmap(v.x,v.y))
{
vis[v.x][v.y][v.c]=true; q.push(v); } }
}
printf("-1\n");
return ; } int main()
{
int cas;cin>>cas;
while(cas--)
{
scanf("%d %d %d",&n,&m,&chance);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&m1[i][j]); bfs(); } }
6-5 巡逻机器人 uva1600的更多相关文章
- BFS 巡逻机器人
巡逻机器人 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83498#problem/F 题目大意: 机器人在一个矩形区域巡逻, ...
- 巡逻机器人(BFS)
巡逻机器人问题(F - BFS,推荐) Description A robot has to patrol around a rectangular area which is in a form ...
- UVA:1600 巡逻机器人
机器人要从一个m*n(m和n的范围都在1到20的闭区间内)的网格的左上角(1,1)走到右下角(m,n).网格中的一些格子是空地,用0表示,其它格子是障碍,用1表示.机器人每次可以往四个方向走一格,但不 ...
- UVa——1600(巡逻机器人)
迷宫求最短路的话一般用bfs都可以解决,但是这个加了个状态,那么就增加一个维度,用来判断k的值.比较简单的三维bfs.写搜索题的话一定要注意细节.这个题花了好长的时间.因为k的原因,一开始用了k的原因 ...
- UVA 1600 Patrol Robert 巡逻机器人 (启发搜索BFS)
非常适合A*的一道题. 比普通的迷宫问题加一个信息k表示当前穿过的障碍物的数量. #include<cstdio> #include<cstring> #include< ...
- UVA - 1600 Patrol Robot (巡逻机器人)(bfs)
题意:从(1,1)走到(m,n),最多能连续穿越k个障碍,求最短路. 分析:obstacle队列记录当前点所穿越的障碍数,如果小于k可继续穿越障碍,否则不能,bfs即可. #pragma commen ...
- 中国VR公司的详尽名单
中国VR公司的详尽名单 <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...
- 日常英语---十三、MapleStory/Monsters/Level 11-20(邪恶之眼)
日常英语---十三.MapleStory/Monsters/Level 11-20(邪恶之眼) 一.总结 一句话总结: evil ['ivl] A stronger version of Evil E ...
- 数据结构——UVA 1600 机器人巡逻
描述 A robot has to patrol around a rectangular area which is in a form of mxn grid (m rows and n colu ...
随机推荐
- Java之Jacob调用COM接口DLL-----------------------------------dm。dll
用Java控制windows了,嗯,低层次按键模拟,可控制游戏,内存也不在话下. 一.环境介绍 1.myeclipse8.5 2.著名按键插件dm.dll 32bit.此插件实现COM接口,百度百科 ...
- 02、@PropertySource指定配置文件的属性映射到JavaBean属性
零.@PropertySource 功能类似于 <context:property-placeholder location="classpath*:/config/load.prop ...
- DHCP服务洪水攻击
1.攻击原理 动态主机设置协议是一个局域网的网络协议,使用UDP协议工作,主要有两个用途: 为内部网络或网络服务供应商自动分配IP地址给用户,以作为内部网络管理员对所有计算机做中央管理的手段. 在正常 ...
- 使用jQuery实现返回顶部功能
<p id="back-to-top"><a href="#top"><span></span>返回顶部< ...
- how tomcat works
本文中只是提取了每个模块的关键部分,具体技术细节只能通过看代码来掌握. 1.socket .serversocket tcp通信 2.servlet init destory process(req, ...
- npm快捷键
一.npm基本快捷键 node -v查看安装的nodejs版本,出现版本号,说明刚刚已正确安装nodejs.PS:未能出现版本号,请尝试注销电脑重试: npm -v查看npm的版本号,npm是在安装n ...
- nginx入门一
配置文件: server_name user root; worker_processes 2; error_log logs/error-test.log; #pid logs/nginx.pid; ...
- SpringBoot集成Dubbo
(1).新建一个普通Maven项目,用于存放一些公共服务接口及公共的Bean等. 项目: 公共Bean: package cn.coreqi.entities; import java.io.Seri ...
- Linux系统打开core dump的配置【转】
什么是core dump core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.core du ...
- 转载:JAVA序列化与反序列化 (作者:YSOcean)
原文:https://www.cnblogs.com/ysocean/p/6870069.html File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878 ...