首頁  >  問答  >  主體

c++ - 无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?

PHP中文网PHP中文网2764 天前888

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-04-17 13:30:23

    雷雷

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:30:23

    如果是逐格找的話,就是一個大二維數組最簡單,周圍八個格子就手寫

    [x-1,y-1]
    [x,y-1]
    [x+1,y-1]
    ...
    [x+1,y+1]
    

    挺優雅的啊。

    如果資料集很大且有規律,可以考慮最佳化方法,跳過一部分格子加速搜尋。當然那就是另外的話題了

    回覆
    0
  • PHP中文网

    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];
        // ...
    }

    回覆
    0
  • 取消回覆