84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
认证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]; // ... }
雷雷
如果是逐格找的話,就是一個大二維數組最簡單,周圍八個格子就手寫
挺優雅的啊。
如果資料集很大且有規律,可以考慮最佳化方法,跳過一部分格子加速搜尋。當然那就是另外的話題了
可以預先列出八個方向的向量,這樣就避免了寫八段重複的程式碼。
如下: