题目链接

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. HMM 前向 后向 Viterbi算法讲解通透的
  2. Java并发编程开发笔记——2线程安全性
  3. leetCode数据查询笔记(困难)
  4. js在IE下面弹出打开和保存文件的对话框
  5. word公式插件_如何快速输入复杂的数学公式?这里有 3 个实用技巧
  6. 华为成了!鸿蒙OS 2.0对比iOS 14:苹果流畅度竟完败?
  7. 超文本标记语言HTML
  8. 求01矩阵中的最大的正方形面积
  9. mysql 8 sql server_终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!
  10. parallels desktop big sur 网络_初中生数学网络学习哪个好
  11. tf.nn.rnn_cell.DropoutWrapper用法细节案例1
  12. myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.
  13. hawk物联网组态工具_有哪些开源html5的组态软件
  14. 如何给这些textbox中赋值
  15. 一个Node程序猿上海的一周
  16. Mapbox3D特效(立体闪光墙)
  17. 标签云打印/微信小程序蓝牙标签打印开放平台功能
  18. 贵州省正安县格林镇:“爱心妈妈”来了!
  19. tab s2 android 8,mini 3一边去!三星GalaxyTab S2 8.0评测
  20. MySQL5.6与5.7的区别——及MySQL5.6版本安装

热门文章

  1. linux ftp匿名只能下载,解决linux ftp匿名上传、下载开机自启问题
  2. pg常用工具之pg_waldump
  3. SQL 为什么动不动就几百行以K记?
  4. lodop java使用安_快速掌握LODOP打印使用方法
  5. AOJ-problem-849
  6. AUC计算公式及python代码
  7. Springboot配置绑定和条件装配
  8. 【NLP】使用 LSTM 和Beam Search进行文本自动完成
  9. vs 2017 安装anycad.net 并实现三维视图的展示
  10. Revit如何修改三维视图背景色