0
IM通过这个帖子的启发所有可能的组合:有n个数字(字母,数字)
PHP algorithm to generate all combinations of a specific size from a single set
使用下面的代码片段IM:
function comb ($n, $elems) {
if ($n > 0) {
$tmp_set = array();
$res = comb($n-1, $elems);
foreach ($res as $ce) {
foreach ($elems as $e) {
array_push($tmp_set, $ce . $e);
}
}
return $tmp_set;
}
else {
return array('');
}
}
$elems = array('A','B','C', 'a', 'b', 'c', 0, 1, 2, 3);
$v = comb(7, $elems);
这工作不错,但问题是,它创建了我的组合是这样的:
(A,B,A) (A,B,C) (A,B,C,0) (A,B,C,1,2)
我想跳过所有这些(A,B,C,0,1,2,a) (A,B,C,0,1,2,...,3)的组合,我只想要7位数字的所有组合,例如:
B)
等等...
我怎么能调整此代码,
谢谢您的帮助!
您好,感谢您的帮助,我看过它,得到它的工作。问题是,我的数据集有64个值,和我的n为20,所以我有很多很多很多很多很多很多很多的组合....但问题是,这将需要几年计算所有组合,有没有减少时间或我可以做什么的方法? – redigaffi
你不能因为64选20为1.9619726×10^16,所以生成列表将需要很长的时间,不管你怎么做。如果还有其他事情你想做,那不涉及生成整个列表,但你可以更快地做到这一点。 – Neal