Algorithm 找到相邻硬币移动的最小数量?
给出了一堆硬币(例如5堆:9,0,5,1,5),总共20枚硬币。。所需的最小移动次数,以使所有堆具有相等数量的硬币(4,4,4,4)(此处的ans为9次移动)规则:一枚硬币只能移动到相邻堆中,即。第j堆硬币可以移动到j-1或j+1(如果存在)Algorithm 找到相邻硬币移动的最小数量?,algorithm,puzzle,Algorithm,Puzzle,给出了一堆硬币(例如5堆:9,0,5,1,5),总共20枚硬币。。所需的最小移动次数,以使所有堆具有相等数量的硬币(4,4,4,4)(此处的ans为9次移动)规则:一枚硬币只能移动到相邻堆中,即。第j堆硬币可以移动到j-1或j+1(如果存在) 有什么好的解谜算法吗?所有桩尺寸的算术平均值给出每个桩的所需尺寸,让它为d,而桩数为n。让我们首先假设,在构造解决方案时,有时会出现负大小的堆,我们将在稍后修正该假设 O(n)算法如下-让我们看看第一堆。如果它的大小是d,那么我们既不想改变它的大小,也不想
有什么好的解谜算法吗?所有桩尺寸的算术平均值给出每个桩的所需尺寸,让它为d,而桩数为n。让我们首先假设,在构造解决方案时,有时会出现负大小的堆,我们将在稍后修正该假设 O(n)算法如下-让我们看看第一堆。如果它的大小是d,那么我们既不想改变它的大小,也不想让硬币穿过其他的硬币堆,因为左边没有硬币堆。这意味着最优解决方案中的任何移动都不会改变这一堆的大小,我们可以忘记它。然而,如果第一堆硬币的大小是d'>d,那么我们知道我们想从中取出(d'-d)硬币。因为它们只能走一条路——向右,我们可以这样做,将第一堆减少到d,然后像以前一样忘记它。类似地,如果d'