统一整数分频器

时间:2010-07-16 12:23:38

标签: algorithm

问题看起来像这样, 您必须绘制N px宽度线作为M个均匀破折号。

例如,如果N = 13且M = 5,我们的破折号宽度为2像素,我们将有3像素误差。

我们可以做得更好,我们可以绘制具有以下宽度的破折号: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.

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

2 个答案:

答案 0 :(得分:2)

我所知道的最简单的方法?使用浮点数...

在Python中:

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

我认为我已经在这里看到了这个。

答案 1 :(得分:0)

Bresenham's algorithm启发的东西应该可以解决问题。相信我,你不希望在你的集合的所有排列中最大化D.这个问题过于复杂(复杂度为O(n!),所以除非n非常小,否则不起作用)