c++ - 无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?
PHP中文网
PHP中文网 2017-04-17 13:28:23
0
3
948
PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
迷茫

雷雷

Ty80

如果是逐个格子找的话,就是一个大二维数组最简单,周围八个格子就手写

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

挺优雅的啊。

如果数据集很大并且有规律,可以考虑优化方法,跳过一部分格子加速搜索。当然那就是另外的话题了

Ty80

可以预先列出八个方向的向量,这样就避免了写八段重复的代码。

如下所示:

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];
    // ...
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板