【发布时间】:2011-05-26 07:17:06
【问题描述】:
我搜索算法来解决这样的问题:
我有几个窗口,每个窗口都可以移动和调整大小,但宽度和高度之间有指定的比例,例如。 2:1(高:宽)。
每个窗口不能在其他窗口上,所有窗口必须完全可见。 空闲区域(桌面壁纸可见性)必须最小。
谁能告诉我这类问题需要什么算法?
您好,
【问题讨论】:
我搜索算法来解决这样的问题:
我有几个窗口,每个窗口都可以移动和调整大小,但宽度和高度之间有指定的比例,例如。 2:1(高:宽)。
每个窗口不能在其他窗口上,所有窗口必须完全可见。 空闲区域(桌面壁纸可见性)必须最小。
谁能告诉我这类问题需要什么算法?
您好,
【问题讨论】:
一种方法是将其视为2D packing problem,就像一维装箱问题一样。例如,here 发布了一个示例算法,其中有一些很好的参考。
【讨论】:
另一种可能比打包更容易实现的方法是将屏幕尺寸细分为所需数量的窗格,然后在窗格内放置一个满足您其他要求的窗口。由于您可能随时打开少量窗口,并且由于您的屏幕不会动态更改其大小,您可能可以预先计算 1 到 O(100) 个打开窗口所需的所有安排。
【讨论】:
如果您可以放宽所有窗口都具有给定“纵横比”的要求,那么问题就变得非常简单。假设你有N“tiles”排列在一个屏幕上,那么这些可以排列在列中,NumCols是N的平方根,当N不完美时四舍五入正方形。所有瓷砖列的宽度相同。然后根据需要向上或向下舍入每列中的磁贴数N/NumCols,以使总列数为N。这是 Microsoft Excel 在“查看”>“全部排列”>“平铺”下所做的。 Excel 选择将少一个磁贴的列放在屏幕左侧。
【讨论】: