首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一系列旋转拨盘设置为给定顺序的最小步骤

将一系列旋转拨盘设置为给定顺序的最小步骤
EN

Stack Overflow用户
提问于 2018-07-27 15:11:43
回答 1查看 223关注 0票数 5

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

旋转的一个步骤是将任意数量的连续拨盘向上或向下旋转一步。刻度盘环绕在9左右。也就是说,从9开始向上旋转一步会得到0,反之亦然。

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

例如:Initial -> 154 Given -> 562

  1. first move first 2 dial up by 1 154 -> 264->1 step
  2. move 1 dial 3 up 264->564 ->3 steps
  3. move 3 dial 2 down 564->562 ->2 steps

所以最小的步数是6

我不需要代码,只需要一些方法的见解。

EN

回答 1

Stack Overflow用户

发布于 2018-07-27 22:34:48

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

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

例如:

145 -> 632

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

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

  1. 将所有数字下移一步-> 034
  2. 将第一个和最后一个数字下移两步-> 832
  3. 将最后一个数字下移两步-> 632 =总计5步
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51552605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档