如果我们想要覆盖一个搜索空间,比如说所有三元组
这将生成三元组:
有没有一种以更“广度优先”的方式进行迭代的方法?这样的迭代将以类似于以下顺序生成三元组:
这个算法的名称是什么?
(x, y, z)
,其中 x
、y
和 z
的值在 1
到 n
之间,我们可以使用嵌套循环来实现:for (int x = 1; x <= n; x++)
for (int y = 1; y <= n; y++)
for (int z = 1; z <= n; z++)
这将生成三元组:
(1, 1, 1)
、(1, 1, 2)
、(1, 1, 3)
、(1, 1, 4)
等等,实际上是“深度优先搜索”或深度优先迭代。有没有一种以更“广度优先”的方式进行迭代的方法?这样的迭代将以类似于以下顺序生成三元组:
(1, 1, 1)
、(2, 1, 1)
、(1, 2, 1)
、(1, 1, 2)
、(2, 2, 1)
、(2, 1, 2)
、(1, 2, 2)
、(2, 2, 2)
、(3, 1, 1)
等等。这个算法的名称是什么?
(1, 1, 1)
开始,每当你出队(x, y, z)
时,将尚未入队且不超过边界的(x+1, y, z)
、(x, y+1, z)
和(x, y, z+1)
都入队。 - user2357112