将一系列旋转刻度盘设置为给定序列的最小步骤

Bar*_*Ray 5 algorithm dynamic-programming min

所以我有以下问题:有n个旋转刻度盘,每个设置为0-9之间的某个数字,它们需要与另一系列n个数字(也在0-9之间)匹配.

旋转的一个步骤是向上或向下旋转任意数量的连续拨盘一步.表盘绕9圈.即从9向上旋转一步,给出0,反之亦然.

我需要找到与给定配置匹配初始配置的最小步骤数.

例如:Initial -> 154 Given -> 562

1.首先将2个拨号向上移动1 154 -> 264- > 1步骤
2.向上移动第1个拨号3 264->564- > 3个步骤
3.向下移动第3个拨号2 564->562- > 2个步骤
所以最小步骤为6.
我不需要代码,只需要对方法有一些见解.

Sar*_*a S 0

我不确定我是否正确理解了这个问题。似乎如果将两个数字一起旋转 1 步,则该移动仅算作一步,而不是两次,对吗?

在这种情况下,为什么不计算每个数字与其在其他系列中的匹配项之间的最小距离。之后,将减号移动和加号移动组合在一起,并尽可能将数字移动到一起。

前任:

145 -> 632

  • 1 的最小距离为 5+-(向上或向下)
  • 4 的最小距离为 1-
  • 5 的最小距离为 3-

由于只有负移动,我会将 5 也算作负移动,并执行以下操作:

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

  • 这总共有 7 个步骤。2. 需要 4 步,因为数字不连续。 (3认同)