2011-08-07 47 views
0

我有一個大小爲N * N的網格或二維數組。考慮一個6×6陣列像例如以下:將2D數組劃分爲「框」和框中的索引元素

...... 
...... 
...... 
...... 
...... 
...... 

我給定的兩個整數,高度和寬度。網格將被劃分成該尺寸的盒,例如分成3個* 3盒是這樣的:

... ... 
... ... 
... ... 

... ... 
... ... 
... ... 

相同的6 * 6網格可以也分爲2個* 3盒是這樣的:

... ... 
... ... 

... ... 
... ... 

... ... 
... ... 

依此類推。人們可以假設,如果它很重要的話,那麼給出的兩個整數總是將整個陣列均勻整齊地整齊排列。問題是,當我有一個座標或索引到數組中時,我需要快速索引這個特定座標的鄰居。鄰居是在同一個盒子裏的點。例如,如果框的大小爲2 * 3,則(0,0)的鄰居將是{(0,1),(0,2),(1,0),(1,1),(1 ,2)}。這似乎並不困難,但我無法想出任何簡單的東西。我正在使用C++,但這是獨立於語言的。

回答

1

,但不嘗試運行該算法...

僞代碼:

list_of_points find_neighbours_of(x, y, height_of_box, width_of_box) 
{ 
    corner_x, corner_y = find_top_left_corner_of_box_containing(x, y) 
    iterate over corner_x to corner_x + height_of_box 
     iterate over corner_y to corner_y + width_of_box 
      if current_x and current_y <> x, y add them to list 
} 
相關問題