【发布时间】:2017-05-07 19:11:23
【问题描述】:
所以这个问题更像是一个算法/方法寻求问题,我正在寻找关于如何解决这个问题的任何想法/见解。我正在浏览一组编程问题,遇到了一个问题,我需要提供对项目列表进行排序所需的最少移动次数。虽然这个问题被标记为“简单”,但我找不到一个好的解决方案。欢迎您的想法。 问题陈述是这样的。
X 有 N 个等半径的圆盘。每个磁盘都有一个从 1 到 N 的不同数字与之关联。磁盘以随机顺序一个叠放在一堆中。 X 想按从上到下的递增顺序对这堆磁盘进行排序。但他有一个非常特殊的方法来做到这一点。 一步他只能从一堆磁盘中选择一个,他只能把它放在最上面。 X 想以最少的可能步骤对他的一堆磁盘进行排序。你能找到对这堆随机排序的磁盘进行排序所需的最少移动次数吗?
【问题讨论】:
-
看起来有一个贪心算法对堆进行排序。它最多选择每个磁盘一次。在每个步骤中选择...的磁盘并将其移至顶部。自己找出替换三个点的情况很有趣,所以我不会放弃它。