1

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

我曾考虑在代表屏幕上创建一个二维数组,其中包含所有小工具及其占用的空间,但我认为可能有一种更有效的方法来做到这一点。

要求如下

  1. 从左到右/从上到下移动找到第一个可用的空白空间,该空间将完全适合小工具窗口,并且与周围小工具有固定的边距。
  2. 如果未找到空白区域,则将该小工具放在所有其他小工具的左下方。

谢谢你。

4

1 回答 1

2

假设您已经为新小工具找到了位置。

  1. 将它向左移动,直到它碰到屏幕边缘或另一个小工具的右边缘。
  2. 将它移到顶部,直到它碰到屏幕边缘或另一个小工具的底部边缘。

这意味着,您可以尝试xfrom a set的所有组合和from a set{0, g1.right, g2.right, .., gn.right}的所有组合。y{0, g1.bottom, g2.bottom, .., gn.bottom}

很简单,但也很O(n^3)复杂。(n^2从上面和另一个n来验证位置是否可用)

于 2011-02-05T03:28:24.300 回答