题目链接

http://noi-test.zzstep.com/contest/0x29%E3%80%8C%E6%90%9C%E7%B4%A2%E3%80%8D%E7%BB%83%E4%B9%A0/2906%20%E6%AD%A6%E5%A3%AB%E9%A3%8E%E5%BA%A6%E7%9A%84%E7%89%9B

分析

状态为牛的位置,分八个方向逐步扩展即可。

AC代码

#include <cstdio>
#include <cstring>
#include <queue>using namespace std;inline int read() {int num = 0;char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9')num = num * 10 + c - '0', c = getchar();return num;
}const int maxn = 155;
const int nxt[8][2] = {{-2, -1}, {-2, 1}, {2, -1}, {2, 1},{-1, -2}, {1, -2}, {-1, 2}, {1, 2}};struct Node {int x, y;Node(int x = 0, int y = 0) : x(x), y(y) {}
} st;int n, m, step[maxn][maxn];
char map[maxn][maxn];
queue<Node> q;inline int judge(int x, int y) {return x > 0 && x <= n && y > 0 && y <= m && map[x][y] != '*';
}inline int bfs() {memset(step, -1, sizeof(step));step[st.x][st.y] = 0;q.push(st);while (!q.empty()) {Node u = q.front(), v;q.pop();if (map[u.x][u.y] == 'H') return step[u.x][u.y];for (int i = 0; i < 8; ++i) {v.x = u.x + nxt[i][0], v.y = u.y + nxt[i][1];if (!judge(v.x, v.y)) continue;if (step[v.x][v.y] == -1) {step[v.x][v.y] = step[u.x][u.y] + 1;q.push(v);}}}return 0;
}int main() {m = read(), n = read();for (int i = 1; i <= n; ++i) {scanf("%s", map[i] + 1);for (int j = 1; j <= m; ++j)if (map[i][j] == 'K') st.x = i, st.y = j;}printf("%d", bfs());return 0;
}

CH2906 武士风度的牛 BFS相关推荐

  1. AcWing 188. 武士风度的牛(BFS,C++)

    AcWing 188. 武士风度的牛 题意 从一个起点遵循某种特殊规则走到终点,求最短的步数 分析 很显然,这题是bfs思想的应用. 1.首先输入数据,并在每次输入数据时判断起点和终点的坐标. 2.初 ...

  2. AcWing 188. 武士风度的牛 BFS 水题

    题目描述 农民John有很多牛,他想交易其中一头被Don称为The Knight的牛. 这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法). 虽然这头神奇的牛 ...

  3. 算法实践:武士风度的牛

    武士风度的牛 描述 这头神奇的牛像其它牛一样喜欢吃草,给你一张地图,上面标注了The Knight的开始位置,树.灌木.石头以及其它障碍的位置,除此之外还有一捆草.现在你的任务是,确定The Knig ...

  4. 188.武士风度的牛

    188.武士风度的牛 总结: 先找到进入floodfill的条件 然后加入把起点加入队列并进行标记 只要队列不空就对格子进行扩展(要除去自己因为自己已经被覆盖过了) 然后判定是否有效(是否超出范围,是 ...

  5. 188. 武士风度的牛 C++ bfs(宽度优先搜索)

    农民John有很多牛,他想交易其中一头被Don称为The Knight的牛. 这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法). 虽然这头神奇的牛不能跳到树 ...

  6. 188 武士风度的牛(bfs)

    1. 问题描述: 农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛.这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法 ...

  7. 算法提高课-搜索-最短路模型-AcWing 188. 武士风度的牛 :bfs、dist数组记录最小步数

    题目分析 来源:acwing 分析:马走日,这里用bfs遍历马的行走过程,输出到达终点的最小步数. 使用bfs求到每个点的最小步数,需要开一个dist[][]数组,来记录起点到某点的最小步数. 队列里 ...

  8. 武士风度的牛[CH2906]

    欢迎大家访问我的老师的OJ---caioj.cn 题面描述 传送门 思路 就是一道普通的宽搜题, 就是马字形的有点鬼畜的说? 代码 #include<cstdio> #include< ...

  9. 188. 武士风度的牛

    农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛. 这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法). 虽然这头神 ...

最新文章

  1. 迈克尔戴尔展望医疗愿景:信息驱动创新
  2. Tomcat灵活配置多项目,多端口,多域名,多虚拟目录
  3. for循环递减_判断语句_循环语句
  4. 你对博客中提到的评分规则有何意见和建议?
  5. Weblogic12c T3 协议安全漏洞分析【CVE-2020-14645 CVE-2020-2883 CVE-2020-14645】
  6. nodemailer使用_如何使用Nodemailer使用HTML作为内容发送电子邮件 Node.js
  7. 一统江湖的大前端(5)editorconfig + eslint——你的代码里藏着你的优雅
  8. 浏览器访问一个地址的大概操作步骤
  9. java文件复制中文_java中如何复制文件,文件里面包含中文?java中如何把文件在控制台上显示,文件中包含中文。...
  10. 数学建模—一元回归分析
  11. CIDetector 边缘识别
  12. 如何计算当地的中央子午线?全国各地中央子午线【转载】
  13. 关于HP笔记本的老毛桃装系统。
  14. 第四范式将亮相2021世界人工智能大会
  15. 钌碳Ru/NC7440-18-8制备碳化铁嵌入式碳复合材料
  16. RSA key fingerprint is....Permission denied (publickey).需要SSH Key
  17. 教你如何查看Ubuntu版本
  18. 怎么通过iTools解决闪退,应用无法安装激活的办法
  19. 腾讯T3大佬亲自教你!dockercommit打包镜像
  20. 软件设计师-计算机网络知识

热门文章

  1. 【Java进阶】Java并发类库提供的线程池有哪几种? 分别有什么特点?
  2. 抖音怎么才能发长视频?详谈抖音发长视频(60s)的要求
  3. WORD出现两个mathtype解决办法,超简单
  4. 十一月英语——还得坚持练
  5. Android-APP 安全(五)之android取证-文件系统与数据结构
  6. python函数详解_INDEX函数
  7. 可迭代对象和迭代器对象
  8. android加载长图片的方法
  9. 新科技 新管理,第二届“拉姆•查兰管理实践奖”揭晓
  10. 淘宝天猫内部优惠券领取