认证0级讲师
雷雷
如果是逐格找的話,就是一個大二維數組最簡單,周圍八個格子就手寫
[x-1,y-1] [x,y-1] [x+1,y-1] ... [x+1,y+1]
挺優雅的啊。
如果資料集很大且有規律,可以考慮最佳化方法,跳過一部分格子加速搜尋。當然那就是另外的話題了
可以預先列出八個方向的向量,這樣就避免了寫八段重複的程式碼。
如下:
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]; // ... }
雷雷
如果是逐格找的話,就是一個大二維數組最簡單,周圍八個格子就手寫
挺優雅的啊。
如果資料集很大且有規律,可以考慮最佳化方法,跳過一部分格子加速搜尋。當然那就是另外的話題了
可以預先列出八個方向的向量,這樣就避免了寫八段重複的程式碼。
如下: