查找最近的数组

时间:2018-06-08 04:10:56

标签: php arrays algorithm logic

我想知道可以使用哪种算法来查找下面数组中最接近 [0,0,0] 的算法。我想通过添加每个集合的值来给每个集合赋值,但问题是数组索引1 [0,2,1] 将总和 3 等于数组索引3.下面的答案应该是索引3,或者你有更好的建议吗?提前谢谢。

$sets = [
    [4,5,6], // 0
    [0,2,1], // 1
    [1,3,0], // 2
    [1,1,1], // 3
    [0,1,3], // 4
    [5,4,3], // 5
]

1 个答案:

答案 0 :(得分:4)

嗯,你基本上描述的对应于找到3D空间中某个点的原点距离,其公式为:

formula

基于此,点[1, 1, 1]确实比[0, 2, 1]更接近原点:

formula-1

formula-2

在PHP中,您可以按如下方式计算距离:

$sets = [[4,5,6], [0,2,1], [1,3,0], [1,1,1], [0,1,3], [5,4,3]];

$distances = array_map(function ($i) {
    return sqrt($i[0]**2 + $i[1]**2 + $i[2]**2);
}, $sets);

print_r($distances);

找到最接近的点然后变得微不足道。