我正在尝试确定我正在做的项目的算法。目标是获得所有数字组合序列,其中每个相邻数字的最大值是彼此的倍数。数字和序列长度是输入。
例子: 如果我给出一个序列长度为 3 和一个最大数为 5 的输入,我应该得到这样的输出。
[ 1, 1, 1 ]
[ 1, 1, 2 ]
[ 1, 1, 3 ]
[ 1, 1, 4 ]
[ 1, 2, 4 ]
[ 1, 3, 3 ]
[ 1, 4, 4 ]
[ 2, 2, 2 ]
[ 2, 2, 4 ]
[ 2, 4, 4 ]
[ 3, 3, 3 ]
[ 4, 4, 4 ]
在所有序列中,每个数字都是其前一个邻居的倍数,而所有数字都小于 5,这是作为输入给出的最大值。
最佳答案
您可以使用回溯来获取所有您想要的序列。
回溯与 DFS 非常相似。您可以创建使用参数{您在序列中输入了多少个数字}的递归函数,并在序列中输入适当的值(参数+ 1)后调用递归函数。 在函数结束时,你必须清除你按顺序输入的数字。 如果序列已满,您还将终止该功能。
关于algorithm - 确定一个数的所有倍数的特定算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50888626/