【Algorithm】Keyboards
来源:互联网 发布:酷乐视q6装软件 编辑:程序博客网 时间:2024/06/10 10:17
题目:
用键盘打出字符串,需要走多少步。
题目中同行没有不同字母是不允许移动的。可以看下面的例子来理解。
分析:
例子一:
ABCDEFGHIJKLMNOPQZY
X*****************Y
键盘长上面这个样子,要打出AZAZ,需要多少步呢
A, select , move downX , move right- , move right -Y , move left- , move up Z, select , move down*, move leftX, move up—
A, select downX , move right- , move right -Y , move left- , move up Z, select , move down*, select.
一共 19 步
这个例子中,XY中间很多,那么表示这些是一个按键,那么从X->Y只要2步
例子二:
6 4
AXYB
BBBB
KLMB
OPQB
DEFB
GHI*
第二行中全部都是B,这一行代表了 key B, 如果当前光标在 左起 第一个B字符, 这个时候是不允许右移,因为右边不存在不同于 B 的key. 此时就只能下移。
6 4
AXYB
BBBB
KLMB
OPQB
DEFB
GHI*
AB
第四列都是B, 纵向的这些B字符 代表 key B, 如果当前光标在上起第一个 B 字符, 这种场景, 允许直接从第一个B 字符,跳过所有相同字符 B, move 一步 到 key *.
解题
如果没有同行相同字母的问题,那就是多次BFS,起点分别是上一次的终点和下一次字母所在位置。但有了这个条件之后,单次BFS可以保证当前最优,却不能保证所有点的最终距离最优
此外,还有一个难点是可达位置,不再简单的是上下左右,可能会因为存在相同字母,跳到下一个位置。
- 【Algorithm】Keyboards
- broken keyboards
- Virtual Keyboards on iPhone and Android
- Algorithm
- Algorithm
- algorithm
- algorithm
- algorithm
- algorithm
- algorithm
- Algorithm
- Algorithm
- algorithm
- Algorithm
- Algorithm
- algorithm
- algorithm
- <algorithm>
- Referer详解
- 荆棘之路【3】角色差异
- Intellij idea 免费破解
- 定时任务的分布调度
- ARM NEON 编程简单入门1
- 【Algorithm】Keyboards
- leetcode 695. Max Area of Island(未解决)
- ajax的执行流程
- Redis 集群安装详细步骤
- spring-shiro实现角色(roles)自定义Filter----配置多个角色的或关系
- LeetCode 64
- char 判断字符是否为大小写
- HTTPOXY漏洞说明
- H264 NAL_AUD