早教吧 育儿知识 作业答案 考试题库 百科 知识分享

php生成三个数字并且任意两个不重复12345678这八个数字,3个为一个组合如:123145167246257347568注意这里的每一组数字里面任何两个数字都不一样.怎么用PHP实现,感觉太难了·····弄了

题目详情
php生成三个数字并且任意两个不重复
1 2 3 4 5 6 7 8 这八个数字,3个为一个组合
如:123 145 167 246 257 347 568
注意这里的每一组数字里面任何两个数字都不一样.
怎么用PHP实现,感觉太难了·····弄了几个小时没写出来,
这里的不一样是这个意思,如:123 145 167这三组数中12 13 23,14 15 45,16 17 67任意两个数字,都不是重复的.
最后的结果就是:123 145 167 246 257 347 568这几组数字,里面任何一组的两个数字的组合都和其他组里的数字不重复.
▼优质解答
答案和解析
$array = array();
for($i=1;$i<=8;$i++){
  
  for($j=1;$j<=8;$j++){
    if($j == $i) continue;
    $br1 = 0;
    foreach($array as $val){
      if(preg_match('/'.$i.'/',$val) && preg_match('/'.$j.'/',$val)){
        $br1 = 1;
        break;
      }
    }
    if($br1 == 1) continue;
    
    for($k=1;$k<=8;$k++){
      if($k == $i || $k == $j) continue;
      $br2 = 0;
      foreach($array as $val){
        if(preg_match('/'.$i.'/',$val) && preg_match('/'.$j.'/',$val)){
          $br2 = 1;
          break;
        }
        if(preg_match('/'.$i.'/',$val) && preg_match('/'.$k.'/',$val)){
          $br2 = 1;
          break;
        }
        if(preg_match('/'.$j.'/',$val) && preg_match('/'.$k.'/',$val)){
          $br2 = 1;
          break;
        }
      }
      if($br2 == 1) continue;
      $tmp = $i.$j.$k;
      $array[] = $tmp;
    }
  }
}
print_r($array);
?>

 Array ( [0] => 123 [1] => 145 [2] => 167 [3] => 246 [4] => 257 [5] => 347 [6] => 356 )

看了 php生成三个数字并且任意两...的网友还看了以下: