Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 适合桌面窗口的算法(如平铺)_Algorithm_Packing_Tiling - Fatal编程技术网

Algorithm 适合桌面窗口的算法(如平铺)

Algorithm 适合桌面窗口的算法(如平铺),algorithm,packing,tiling,Algorithm,Packing,Tiling,我使用搜索算法来解决如下问题: 我有几个窗口,每个窗口都可以移动和重新调整大小,但在宽度和高度之间有指定的比例,例如2:1(高度:宽度) 每个窗口不能位于其他窗口上,所有窗口必须完全可见。 自由区域(桌面壁纸可见性)必须最小 谁能告诉我这类问题需要什么算法 您好,一种方法是将其视为一个问题,就像1D箱子包装问题一样。例如,发布了一个示例算法,其中有一些很好的参考。另一种可能比打包更容易实现的方法是,将屏幕大小细分为所需数量的窗格,然后在窗格内安装一个满足其他要求的窗口。由于您可能会随时打开少量窗

我使用搜索算法来解决如下问题:

我有几个窗口,每个窗口都可以移动和重新调整大小,但在宽度和高度之间有指定的比例,例如2:1(高度:宽度)

每个窗口不能位于其他窗口上,所有窗口必须完全可见。 自由区域(桌面壁纸可见性)必须最小

谁能告诉我这类问题需要什么算法


您好,

一种方法是将其视为一个问题,就像1D箱子包装问题一样。例如,发布了一个示例算法,其中有一些很好的参考。

另一种可能比打包更容易实现的方法是,将屏幕大小细分为所需数量的窗格,然后在窗格内安装一个满足其他要求的窗口。由于您可能会随时打开少量窗口,并且由于您的屏幕不会动态更改其大小,因此您可能可以预先计算1到O(100)个打开窗口所需的所有排列。

如果您可以放宽所有窗口都具有给定“宽高比”的要求,那么问题就变得非常简单。假设要在单个屏幕上排列
N
“平铺”,则可以将这些平铺排列在列中,列数
NumCols
N
的平方根,当
N
不是完美的正方形时,四舍五入。所有的砖柱宽度相等。然后,根据需要向上或向下舍入每列中的分片数,使总列数为
N/NumCols
。这是Microsoft Excel在“查看>排列所有内容>平铺”下执行的操作。Excel选择在屏幕左侧少放一个平铺的列。

相关:窗口大小调整功能有什么用?是的,你需要做的就是重新布局——布局算法是你想要的,不是吗,不是它周围的基础设施?