一开始按照标准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的更多相关文章

  1. BFS 巡逻机器人

    巡逻机器人 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83498#problem/F 题目大意: 机器人在一个矩形区域巡逻, ...

  2. 巡逻机器人(BFS)

    巡逻机器人问题(F - BFS,推荐) Description   A robot has to patrol around a rectangular area which is in a form ...

  3. UVA:1600 巡逻机器人

    机器人要从一个m*n(m和n的范围都在1到20的闭区间内)的网格的左上角(1,1)走到右下角(m,n).网格中的一些格子是空地,用0表示,其它格子是障碍,用1表示.机器人每次可以往四个方向走一格,但不 ...

  4. UVa——1600(巡逻机器人)

    迷宫求最短路的话一般用bfs都可以解决,但是这个加了个状态,那么就增加一个维度,用来判断k的值.比较简单的三维bfs.写搜索题的话一定要注意细节.这个题花了好长的时间.因为k的原因,一开始用了k的原因 ...

  5. UVA 1600 Patrol Robert 巡逻机器人 (启发搜索BFS)

    非常适合A*的一道题. 比普通的迷宫问题加一个信息k表示当前穿过的障碍物的数量. #include<cstdio> #include<cstring> #include< ...

  6. UVA - 1600 Patrol Robot (巡逻机器人)(bfs)

    题意:从(1,1)走到(m,n),最多能连续穿越k个障碍,求最短路. 分析:obstacle队列记录当前点所穿越的障碍数,如果小于k可继续穿越障碍,否则不能,bfs即可. #pragma commen ...

  7. 中国VR公司的详尽名单

    中国VR公司的详尽名单   <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...

  8. 日常英语---十三、MapleStory/Monsters/Level 11-20(邪恶之眼)

    日常英语---十三.MapleStory/Monsters/Level 11-20(邪恶之眼) 一.总结 一句话总结: evil ['ivl] A stronger version of Evil E ...

  9. 数据结构——UVA 1600 机器人巡逻

    描述 A robot has to patrol around a rectangular area which is in a form of mxn grid (m rows and n colu ...

随机推荐

  1. [HEOI2015]定价 (贪心)

    分类讨论大法好! \(solution:\) 先说一下我对这个题目的态度: 首先这一题是贪心,这个十分明显,看了一眼其他题解都是十分优秀的贪心,可是大家都没有想过吗:你们贪心都是在区间\([l,r]\ ...

  2. vue axios全攻略

    不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解.本来想在网上找找详细攻略,突然发现,axios 的官方文档本身就非常详细!!有这个还要什么自行 ...

  3. Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析【转】

    转自:http://blog.csdn.net/hzn407487204/article/details/7995041 在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设 ...

  4. ES系列十七、logback+ELK日志搭建

    一.ELK应用场景 在复杂的企业应用服务群中,记录日志方式多种多样,并且不易归档以及提供日志监控的机制.无论是开发人员还是运维人员都无法准确的定位服务.服务器上面出现的种种问题,也没有高效搜索日志内容 ...

  5. Visual Studio 2017中的快捷键

    Ctrl+Tab: 快速切换活动文件

  6. C++11中智能指针的原理、使用、实现

    目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理.程序员自己管理堆内存可以提高了程序 ...

  7. @RequestBody,@ResponseBody

    @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上: ...

  8. oracle flashback 后主键及索引更改问题

    oracle flashback 后 主键会变为bin开头,如果删除可以采用将sql复制出单独窗口,然后加上“”执行

  9. centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解

    centos环境安装mysql5.7 其实不建议安装mysql5.7 语法和配置可能和以前的版本区别较大,多坑,慎入 1.yum方式安装(不推荐) a.安装mysql5.7 yum源 centos6: ...

  10. urllib处理包的简单使用

    我们可以使用urllib.request.urlopen()这个接口函数就可以打开一个网站,读取打印信息 你可以现在终端使用python from urllib import request if _ ...