algorithm - 将一系列旋转表盘设置为给定序列的最少步骤

标签 algorithm dynamic-programming min

所以我有以下问题: 有 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 也算作负步数,然后执行以下操作:

  1. 将所有数字向下移动一位 -> 034
  2. 将第一个和最后一个数字向下移动两步 -> 832
  3. 将最后一个数字向下移动两步 -> 632 = 总共 5 个步骤

关于algorithm - 将一系列旋转表盘设置为给定序列的最少步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51552605/

相关文章:

algorithm - 有效地找到一个完美的广场

python - 动态规划问题类似于Python中的旅行商

C 编程 - 我对这些函数做错了什么?

c++ - 具有C++ vector 的文档距离算法

java - 具有特定输出的三重嵌套 For 循环 (java)

algorithm - 生成有序约束集

algorithm - 动态规划 : finding largest triangle

algorithm - Haskell:如何内存这个算法?

Java数组最小值和最大值问题

arrays - 找到 S(S=(min2∧min) ) 的最大可能值,其中 min2 和 min 是数组的 k 个元素中的最小整数和下一个最小整数