同Uva816,本题在本质上也是迷宫问题,连续穿越的次数k起到了关键作用,故用三元组表示状态。

#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <algorithm>
#include <functional>
#include <utility>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <cctype>
#define CLEAR(a, b) memset(a, b, sizeof(a))
#define IN() freopen("in.txt", "r", stdin)
#define OUT() freopen("out.txt", "w", stdout)
#define LL long long
#define maxn 25
#define maxm 200005
#define mod 1000000007
#define INF 1000000007
#define eps 1e-5
#define PI 3.1415926535898
#define N 26
using namespace std;
//-------------------------CHC------------------------------//
struct Node {int x, y, k;Node(int x = 0, int y = 0, int k = 0) : x(x), y(y), k(k) { }
};
int n, m, k;
int G[maxn][maxn];
int d[maxn][maxn][maxn];
const int dx[] = { 1, -1, 0, 0 };
const int dy[] = { 0, 0, 1, -1 };bool inside(Node u) { return u.x >= 1 && u.x <= n && u.y >= 1 && u.y <= m; }int bfs() {CLEAR(d, -1);queue<Node> q;q.push(Node(1, 1, 0));d[1][1][0] = 0;while (q.size()) {Node u = q.front(); q.pop();if (u.x == n && u.y == m) return d[u.x][u.y][u.k];   //由于bfs是层次遍历,故先到达为mindis。//printf("%d %d %d\n", u.x, u.y, u.k);for (int i = 0; i < 4; ++i) {Node v(u.x + dx[i], u.y + dy[i], u.k);if (inside(v)) {if (G[v.x][v.y] == 1) {if(u.k > 0) v.k++; //连续else v.k = 1; //首次}else v.k = 0;if (d[v.x][v.y][v.k] == -1 && v.k <= k) {d[v.x][v.y][v.k] = d[u.x][u.y][u.k] + 1;q.push(v);}}}}return -1;
}int main() {int T;scanf("%d", &T);while (T--) {scanf("%d%d%d", &n, &m, &k);for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j)scanf("%d", &G[i][j]);printf("%d\n", bfs());}return 0;
}

习题6-5 巡逻机器人(Patrol Robot, ACM/ICPC Hanoi 2006, UVa1600)相关推荐

  1. 习题6_5 巡逻机器人(Patrol Robot, ACM/ICPC Hanoi 2006, UVa1600)

    越障可以拐弯,一个障碍可能被不同路线所经过,所以普通的dfs不行,再加一个维度step,表示走到此结点越过的障碍数 #include<cstdio> #include<cstring ...

  2. UVa1600 习题6-5 巡逻机器人 (Patrol Robot,ACM/ICPC Hanoi 2006)

    原题链接: UVa-1600 题目大意: 模拟机器人要从一个m*n(m和n的范围都在1到20的闭区间内)的网格的左上角(1,1)走到右下角(m,n).网格中的一些格子是空地,用0表示,其它格子是障碍, ...

  3. 习题6-5 UVA1600 巡逻机器人 Patrol Robot

    难度:4 稍微难一点的bfs,以前数组的bfs都是用二维,来记录这个点入过队没有,但是题目加了一个条件,那就是最多连续穿墙不超过一个数,那么这就又是一维状态,加一维来表示到这个点连续穿墙的次数,也就是 ...

  4. 简单BFS 紫书 UVA 1600 巡逻机器人(Patrol Robot)

    题目链接: https://vjudge.net/problem/UVA-1600 思路 开了一个二维数组buf记录图的信息. Node中额外开了一片内存用来储存穿墙信息. 这道题一定要注意将点标记为 ...

  5. UVA1600 巡逻机器人 Patrol Robot

    首先这道题的意思就是,你走到没有障碍的地方,你连续穿越的障碍数就是0,走一个障碍+1,如果走到0那么连续障碍数归零,用一个结构体来保存状态,这时状态变成了三个,还有一个是走到这个点连续穿越的障碍数,通 ...

  6. 习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)

    前n(n≤10000)个整数顺次写在一起:123456789101112-数一数0-9各出现多少次 (输出10个整数,分别是0,1,-,9出现的次数). 原题链接:https://vjudge.net ...

  7. 习题8-14 商队抢劫者(Caravan Robbers, ACM/ICPC SEERC 2005, UVa1616)

    原题链接:https://vjudge.net/problem/UVA-1609 分类:二分法 备注:精度问题,技巧 #include<bits/stdc++.h> using names ...

  8. 习题 7-12 移动小球(Moving Pegs, ACM/ICPC Taejon 2000, UVa1533)

    原题链接:https://vjudge.net/problem/UVA-1533 分类:状态压缩 备注:模拟,BFS水题 感觉这个题没有什么做的价值-前一题做了就够了. 注意几个比较隐晦的细节,每一步 ...

  9. 算法竞赛入门竞赛 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

    给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分 别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol).例如,C6 ...

最新文章

  1. win7变成xp风格了怎么改回_揭秘:干掉了win7!为何win10屡被吐槽它却“永世留芳”?...
  2. vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
  3. python怎么用excel-python怎么连接excel
  4. 浅析 Mybatis 与 Hibernate 的区别与用途
  5. 深入浅出MySQL事务处理和锁机制
  6. 对话美摄科技侯康:提升技术,拓展场景 美摄智能汽车视频处理方案已就位
  7. JAVA之运算符优先级
  8. java i++与++i与与之间的区别在哪里
  9. (31)FPGA米勒型状态机设计(二段式)(第7天)
  10. NumPy Beginner's Guide 2e 带注释源码 四、NumPy 便利的函数
  11. mysql 10048 linux_解决Can't connect to MySQL server on 'localhost' (10048)
  12. 10张漫画解释进程与线程的区别与联系
  13. wordpress谷歌字体
  14. android调用完自己写的app之后如何返回原来的android应用_App逆向篇 神器之 Frida...
  15. linux 命令学习 —— 硬件外设管理(dmesg、lsusb)
  16. 开课吧9.9元学python靠谱吗-开课吧的Python课程怎么样?大概是多少钱?讲师是廖雪峰吗?...
  17. java day33【JavaScript基础】
  18. CSS基础知识10-两种CSS布局
  19. python 更新pip镜像源
  20. java 数独游戏_java数独游戏完整版分享

热门文章

  1. oppo手机怎么关闭Android,OPPO手机必须关闭的3个设置,让你的手机永不卡顿,再用3年...
  2. 《感动中国》2005年度人物评选揭晓
  3. 基于三维实景建模与CIM的数字孪生城市建设
  4. [xueqi]吃着榨菜,轻松搞下漏洞百出的湾湾站
  5. 三、nginx服务的nginx.conf的参数配置解析
  6. 【JAVA SE】 JAVA基础强袭之路 数据类型及其转换和提升全面讲解(猛男细节+保底一个收藏)
  7. “斜杠青年”多巴胺,这次把手伸进了梦里
  8. 风车动漫服务器维修要多长时间,风车动漫APP是什么样的软件?风车动漫APP出现打不开的具体处理方法...
  9. java实现三角螺旋阵
  10. MySQL删除行之后空间没有被释放