问题看起来像这样, 您必须绘制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.
最快/最简单的方法是什么?
答案 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非常小,否则不起作用)