比如数字为 1234
结果如何实现成12xx; 1x3x; 1xx4; x23x; x2x4; xx34 多谢大家帮忙

解决方案 »

  1.   

    $n = 1234; //原始数据
    $n = "$n"; //转化为字符型
    //生成掩码,可根据需要调整掩码中‘0’的个数
    for($i=0; $i<pow(2, strlen($n)); $i++) {
      $ch = sprintf("%04s", decbin($i));
      if(strlen(str_replace('1', '', $ch)) == 2) {
        $mask[] = $ch;
      }
    }//产生结果
    foreach($mask as $m) {
      $ch = '';
      for($i=0; $i<strlen($m); $i++) {
        if($m{$i} == '0') {
          $ch .= 'x';
        }else {
          $ch .= $n{$i};
        }
      }
      echo "$ch <br />";
    }
     
    xx34 
    x2x4 
    x23x 
    1xx4 
    1x3x 
    12xx 
      

  2.   

    xuzuning大哥高手啊如果要得到123;124;134;234有好的算法吗
      

  3.   

    恩。。第一个问题xuzuning已经帮忙解决了还有一个组合问题
      

  4.   

    function q($n){
    $arr = explode(' ',trim(chunk_split($n,1,' ')));
    foreach ($arr as $v) {
    $out[] = str_replace($v,'',$n);
    }
    return $out;
    }
    function q2($n){
    for ($i=0;$i<strlen($n);$i++) {
    $out[] = substr_replace($n,'',$i,1);
    }
    return $out;
    }
    print_r(q(1234));
    print_r(q2(1234));
      

  5.   

    jnkc大哥。。高。。
    如果是这样的结果又办法吗?12;13;14;23;24;34