所以我有以下问题:
有 n 个旋转刻度盘,每个刻度盘都设置为 0-9 之间的某个数字,它们需要与另一系列的 n 个数字(也在 0-9 之间)相匹配。
旋转一步是将任意数量的连续刻度盘向上或向下旋转一步。表盘环绕 9。即从 9 向上旋转一级给出 0,反之亦然。
我需要找到使初始配置与给定配置相匹配的最少步骤数。
例如:Initial -> 154 Given -> 562
1. 先动先 2 拨 1 154 -> 264
->1 step
2. 将第一个拨盘向上移动 3 264->564
->3 步
3. 将第 3 个拨盘 2 向下移动 564->562
->2 步
所以最小步数是 6
。
我不需要代码,只需要对方法的一些见解。
最佳答案
我不确定我是否正确理解了这个问题。似乎如果将两个数字一起旋转 1 步,则该移动仅计为一次移动,而不是两次,对吗?
在那种情况下,为什么不计算每个数字与其在其他系列中的匹配项之间的最小距离。之后将减号和加号组合在一起,并尽可能将数字一起移动。
例如:
145 -> 632
- 1 的最小距离为 5+-(向上或向下)
- 4 的最小距离为 1-
- 5 的最小距离为 3-
由于只有负步数,我会将 5 也算作负步数,然后执行以下操作:
- 将所有数字向下移动一位 -> 034
- 将第一个和最后一个数字向下移动两步 -> 832
- 将最后一个数字向下移动两步 -> 632 = 总共 5 个步骤
关于algorithm - 将一系列旋转表盘设置为给定序列的最少步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51552605/