为了账号安全,请及时绑定邮箱和手机立即绑定

数组排列算法笔试题

数组排列算法笔试题

PHP
回首忆惘然 2019-03-08 18:02:25
php算法笔试题 有一二维数组 array(array(1,2,3,4,5,6,7,8,9), array(1,2,3,4,5,6,7,8,9), array(1,2,3,4,5,6,7,8,9), array(1,2,3,4,5,6,7,8,9), array(1,2,3,4,5,6,7,8,9), ) 每个数组取不同的5个数为组成1组 求问有多少种组合数组[数组0]取出的值 != 数组[数组1]取出的值!= 数组[数组2]取出的值 != 数组[数组3]取出的值 != 数组[数组4]取出的值 组成一组;为一组这种求解
查看完整描述

4 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

for ($i = 1; $i < 10; $i++) {
    for ($j = 1; $j < 10; $j++) {
        if ($i == $j) {
            continue;
        }
        for ($k = 1; $k < 10; $k++) {
            if ($i == $k || $j == $k) {
                continue;
            }
            for ($l = 1; $l < 10; $l++) {
                if ($i == $l || $j == $l || $k == $l) {
                    continue;
                }
                for ($m = 1; $m < 10; $m++) {
                    if ($i == $m || $j == $m || $k == $m || $l == $m) {
                        continue;
                    }
                    $arr[] = $i . $j . $k . $l . $m;
                }
            }
        }
    }
}

echo '<pre>';
var_dump($arr);die();


//方法二
//不过可以应对不同的数组参数,不过参数越多,性能就越糟糕
set_time_limit(0);
$arr =[
  [1,2,3,4,5,6,7,8,9],
  [1,2,3],
  [1,2,3,4,5,6,7,8,9],    
  [1,2,3,4,5,6,7,8,9],    
  [1,2,3,4,5,6,7,8,9], 
  [5,6,7,8,9],         
  
];


$count = count($arr);
//需求:$arr每个子数组取出一个1个不同的数,进行组合
$main = [];

    
for($i=0; $i<$count; $i++){
       $dep = $arr[$i];
       $sock = $main;
       $main = [];
       for ($j=0; $j <count($sock) ; $j++) { 
          $split = str_split($sock[$j]);
          for ($k=0; $k < count($dep); $k++) { 
            if(in_array($dep[$k], $split)){
              continue;

            }

            $number = $sock[$j].$dep[$k];
            if(!in_array($number, $main)){
                $main[]=$number;

            }
          }

       }
       $main = empty($main)?$dep:$main;
      

      
}

echo '<pre>';
var_dump($main);
die();
    
查看完整回答
反对 回复 2019-03-18
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

9×8×7×6×5 = 15120;应该是这样的吧

查看完整回答
反对 回复 2019-03-18
?
慕斯王

TA贡献1864条经验 获得超2个赞

9x8x7x6x5

查看完整回答
反对 回复 2019-03-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

98765

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 373 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信