2011-02-05 64 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