2011-02-05 41 views
1

我需要一种算法,可以在屏幕上已有的其他小工具窗口之间的第一个可用空间中找到一个小工具窗口。基本上一个屏幕将包含不同大小的小工具窗口,它们都位于不同的位置。在屏幕上添加另一个固定大小的小工具时,我需要一种锻炼小工具放置位置的方法,即在小工具之间的空白空间中进行锻炼。如果该算法找不到足够的空间,那么该小工具将被放置在现有小工具的底部。窗口定位算法

我想过创建一个2维数组来代表包含所有小工具和它们占用的空间的屏幕,但我认为这可能是一个更有效的方法。

的要求如下

  1. 从左至右/从上到下找到第一个可用的空闲空间,将完全与周围的小工具的固定利润率适合小工具窗口移动。
  2. 如果找不到空的空间,请将小工具放在所有其他小工具的左下角。

谢谢。

回答

2

让我们假设你已经找到了一个新的小工具的地方。

  1. 将其移到左侧,直到它碰到屏幕边缘或其他小工具的右边缘。
  2. 将其移动到顶部,直到它碰到屏幕边缘或其他小工具的底部边缘。

这意味着,你可以尝试从一组{0, g1.right, g2.right, .., gn.right}并从一组{0, g1.bottom, g2.bottom, .., gn.bottom}y所有组合的x所有组合。

很简单,并给出O(n^3)的复杂性。 (n^2从上面和另一n来验证位置可用)

+0

感谢您的回答,它不是我正在寻找的,因为我没有足够清楚地解释问题,所以我更新了问题。 – 2011-02-05 06:41:37