如何计算最大值 可能的组合数量?

Cli*_*ote 3 php algorithm powerset

可能重复:
显示字符串算法的可能组合,该
算法将采用数字或单词并查找所有可能的组合

如果我有3个字符串,例如:

"abc def xyz"
Run Code Online (Sandbox Code Playgroud)

我想通过重新排列这些字符串找到我可以生成的最大组合数,例如:

  • abc xyz def
  • def xyz abc
  • xyz abc def

等计算这个的公式/算法是什么?

Dam*_*ash 8

这不是一种组合,而是排列.算法是n!其中n是元素的数量.

为什么?

因为你有3个值放在三个地方,所以对于第一个地方你有三个选项,第二个只有两个(因为你已经宫殿第一个字符串)和最后你只有一个选项.

3*2*1 = 3!= 6

但是,如果你可以重复这些选择而不是重复排列

所以对于第一名你可以选择3个字符串,第二个也可以选择一个

3*3*3 = 3 ^ 3 = 27

n ^ k - 其中n是字符串数,k是"位置"的数量

代码算法如下所示:

function fact($n)
{
  if ($n == 0)
  {
    return 1;
  }
  else
  {
    return $n * fact($n - 1);
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一个递归的例子