PHP中文网2017-04-17 13:30:23
如果是逐格找的話,就是一個大二維數組最簡單,周圍八個格子就手寫
[x-1,y-1]
[x,y-1]
[x+1,y-1]
...
[x+1,y+1]
挺優雅的啊。
如果資料集很大且有規律,可以考慮最佳化方法,跳過一部分格子加速搜尋。當然那就是另外的話題了
PHP中文网2017-04-17 13:30:23
可以預先列出八個方向的向量,這樣就避免了寫八段重複的程式碼。
如下:
const int dx[] = {0, 0, 1, -1, -1, -1, 1, 1};
const int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
// ...
for (int i = 0; i < 8; ++i) {
int cur_x = x + dx[i];
int cur_y = y + dy[i];
// ...
}