我有一组不同宽度的列,我需要一个算法来重新调整它们的大小,使其值y大于它们所有宽度的总和。
我希望算法优先考虑宽度相等。因此,如果我有一个绝对大的值,列的宽度将或多或少相同。如果没有足够的空间,我希望更小的细胞被优先考虑。
有什么好主意吗我想要一些简单的东西:
getNewWidths(NewWidth, ColumnWidths[]) returns NewColumnWidths[]
最佳答案
伪码:
w = NewWidth
n = ColumnWidths.count
sort(ColumnWidths, ascending)
while n > 1 and ColumnWidths[n-1] > (w/n):
w = w - ColumnWidths[n-1]
n = n - 1
for i = 0 to n-1:
ColumnWidths[i] = w / n
您需要添加一些代码来重新分发w/n计算中的任何取舍,但我认为这可以做到。
关于algorithm - 调整列大小算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1870341/