A70832 | 蓝桥杯赛迷宫
来源编程题
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
把一个 n 行 m 列的字符阵列看做一个迷宫,迷宫仅包含 L、Q、B、S 中的大写字母(蓝桥杯赛的汉语拼音首字母)。
初始时,你可以从任意一个 L 字母开始,移向相邻的 Q 字母,然后从此 Q 字母出发,移向相邻的 B 字母,然后从此 B 字母出发,移向相邻的 S 字母……。这样,你就算是走过了一个 LQBS 字符序列。
接下来,仍然可以从此 S 字母出发,移向相邻的 L 字母……,重复上述的动作,你就可以不断地走过 LQBS 序列。
请注意,所谓相邻仅包含上、下、左、右 4 个方向,且只能从 L->Q,从 Q->B,从 B->S,从 S->L。
可以想像,由于选择的出发点不同,我们有可能在迷宫中走过无数次的 LQBS ,或者是有限次的 LQBS ,或者一次也走不了。
编程实现:请你编写程序,求出在给定的迷宫中,我们最多可以走过多少次 LQBS?
输入格式
第一行:正整数 n,m,表示迷宫的规模为 n 行 m 列,0 < m < 100,0 < n < 100。
接下来的 n 行:每行 m 个符合题意的字母,字母间无空格。
输出格式
一个整数。
即:如果在迷宫中可以无限次的走过 LQBS,输出 -1,否则,输出可以走过 LQBS 的最多次数。
输入输出样例
输入 #1
1 2 LQ
输出 #1
0
输入 #2
3 3 LSB QBQ BSL
输出 #2
-1
输入 #3
4 4 BLQB BBQS SBQL QQQQ
输出 #3
2
思路
「蓝桥杯赛迷宫」先读懂题意与样例,判断是模拟、枚举、贪心还是搜索/DP,再分步实现。
步骤
1. 仔细读输入输出与样例,确定数据范围。
2. 选择合适算法并处理边界。
3. 按格式输出,注意多组数据与精度。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?