gpt4 book ai didi

algorithm - 找到正整数 k 的所有可能倍数( n 的大小)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:40:40 24 4
gpt4 key购买 nike

输入 1:

64

输出:(大小为 3)

1 x 1 x 64  =64
1 x 2 x 32 =64
1 x 4 x 16 =64
1 x 8 x 8 =64
2 x 2 x 16 =64
2 x 4 x 8 =64
4 x 4 x 4 =64

输入2:

6

输出:(大小为 2)

1 x 6  =6
2 x 3 =6

我尝试使用完全二叉树,但我没有得到所有可能的组合.

这里是:

                             64

32 2

16 2 2 1

8 2 1 2 1 2 1 1

如果您按级别元素跟踪级别只有一些组合可用

64 x 1 X 1
32 X 2 X 1
16 x 2 x 2
8 x 2 x 2 x 2( limit > 3 )

问题是我需要所有可能的组合

最佳答案

您可以使用递归方法。考虑以下 PHP 代码(我想您可以将想法转换为您需要的每种语言):

    function comb($num, $cnt, $prefix, $minDiv) {
if ($cnt == 0)
{
if ($num == 1)
return rtrim($prefix,",");
else return false;
}
$arrs = array();
for ($i=$minDiv; $i <= $num; $i++) {
if ($num % $i == 0) { // if num modulo i equal 0
$ans = comb($num/$i, $cnt-1, $prefix . $i . ",", $i );
if ($ans) // if valid combination add it
$arrs[] = $ans;
}
}
return $arrs;
}


$ans = comb(64,3, "",1);
echo "ANSWER:\n";
echo print_r($ans);

此代码将为 comb(6,2, "", 1) 生成以下答案:

1,6
2,3

关于algorithm - 找到正整数 k 的所有可能倍数( n 的大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51462045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com