所有可能的n个数字组合(字母,数字)

时间:2016-11-08 23:52:35

标签: php combinations

我的灵感来自这篇文章:

PHP algorithm to generate all combinations of a specific size from a single set

即时使用以下代码段:

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)

我想跳过3的所有这些组合,我只想要7位数的所有组合,例如:

(A,B,C,0,1,2,a) (A,B,C,0,1,2,B)

依旧......

我怎么能调整这段代码,

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的代码适用于我。尝试使用三个元素运行它,你会看到它只输出长度为7的组合。最后不要忘记print_r($ v)。