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