Algorithm 均匀整数除法器

Algorithm 均匀整数除法器,algorithm,Algorithm,问题是这样的,, 你必须画一条N px宽的线,作为一条M均匀的虚线 例如,如果N=13,M=5,我们的破折号宽度为2px,错误为3px 我们可以做得更好,我们可以画以下宽度的破折号:3,3,3,2,2。 但是我们可以做得更好,破折号可以有以下宽度:3,2,3,2,3 如果我有一个列表a=(3,3,3,2,2),我怎么能找到这样的列表,使得列表中所有对之间的距离“D”最大 在这个例子中,D(a)=0+0+1+0=1。 对于列表b=(3,2,3,2,3),D(b)=1+1+1+1=4 最快/最简单的

问题是这样的,, 你必须画一条N px宽的线,作为一条M均匀的虚线

例如,如果N=13,M=5,我们的破折号宽度为2px,错误为3px

我们可以做得更好,我们可以画以下宽度的破折号:3,3,3,2,2。 但是我们可以做得更好,破折号可以有以下宽度:3,2,3,2,3

如果我有一个列表a=(3,3,3,2,2),我怎么能找到这样的列表,使得列表中所有对之间的距离“D”最大

在这个例子中,D(a)=0+0+1+0=1。 对于列表b=(3,2,3,2,3),D(b)=1+1+1+1=4


最快/最简单的方法是什么?

受启发的方法应该可以奏效。相信我,你不想在你的集合的所有排列中最大化D。这个问题过于复杂(复杂度是O(n!),所以除非n非常小,否则这将不起作用)

我知道的最简单的方法是什么?使用浮点数

在Python中:

def pace(D,M): return [round(float(D) / M * i) for i in range(1,M+1)]

我想我已经在这里的某个地方看过了。

这是作业吗?到目前为止你得到了什么?另外,我不完全明白为什么3-2-3-2-3比3-3-3-2-2好,你能补充一些信息吗。我们为什么要最大化D()?我们之所以要最大化D(),是因为我们想画出看起来相等的元素,并且所有元素都选择了大小。例如,想象画任意大小的棋盘。虚线之间没有空格吗?假设数学运算是O(1),这可以在O(M)时间内完成。也许这是一个好的方向。当我寻找答案时,我没有想到这一点。当然我不想最大化目标的功能!我只是想用一种正式的方式来表达这个问题。很好,这是一个简单的好答案。唯一的想法是,这并没有给我们答案,如何找到更一般问题的解决方案——给定一组整数,找到使D最大化的置换,但正如我所说的,这是我问题的伟大解决方案,谢谢。