我看到了这个算法将采用数字或单词并找到所有可能的组合 https://stackoverflow.com/questions/1256117/algorithm-that-will-take-numbers-or-words-and-find-all-possible-combinations
我正在使用它,但它不会返回所有“真实”组合。
PHP:
<?php
require_once 'Math/Combinatorics.php';
$words = array('cat', 'dog', 'fish');
$combinatorics = new Math_Combinatorics;
foreach($combinatorics->permutations($words, 2) as $p) {
echo join(' ', $p), "\n";
}
?>
它返回:
cat dog
dog cat
cat fish
fish cat
dog fish
fish dog
但这些并不都是真实的组合,所有真实的组合还包括这些:
cat cat
dog dog
fish fish
这就是我需要的,获得所有真实组合的方法:
cat dog
dog cat
cat fish
fish cat
dog fish
fish dog
cat cat
dog dog
fish fish
好的,这是您的代码(顺便说一句,感谢您发布如此有趣且具有挑战性的问题 - 至少对我来说......:-)) -使用递归对于给定元素数组的所有可能的排列(按 N))
Code :
<?php
function permutations($arr,$n)
{
$res = array();
foreach ($arr as $w)
{
if ($n==1) $res[] = $w;
else
{
$perms = permutations($arr,$n-1);
foreach ($perms as $p)
{
$res[] = $w." ".$p;
}
}
}
return $res;
}
// Your array
$words = array('cat','dog','fish');
// Get permutation by groups of 3 elements
$pe = permutations($words,3);
// Print it out
print_r($pe);
?>
Output :
Array
(
[0] => cat cat cat
[1] => cat cat dog
[2] => cat cat fish
[3] => cat dog cat
[4] => cat dog dog
[5] => cat dog fish
[6] => cat fish cat
[7] => cat fish dog
[8] => cat fish fish
[9] => dog cat cat
[10] => dog cat dog
[11] => dog cat fish
[12] => dog dog cat
[13] => dog dog dog
[14] => dog dog fish
[15] => dog fish cat
[16] => dog fish dog
[17] => dog fish fish
[18] => fish cat cat
[19] => fish cat dog
[20] => fish cat fish
[21] => fish dog cat
[22] => fish dog dog
[23] => fish dog fish
[24] => fish fish cat
[25] => fish fish dog
[26] => fish fish fish
)
HINT : By permutations($words,2)
,你将能够得到你想要的......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)