php算法筆試題
有一二維數(shù)組
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),
)
每個數(shù)組取不同的5個數(shù)為組成1組 求問有多少種組合數(shù)組[數(shù)組0]取出的值 != 數(shù)組[數(shù)組1]取出的值!= 數(shù)組[數(shù)組2]取出的值 != 數(shù)組[數(shù)組3]取出的值 != 數(shù)組[數(shù)組4]取出的值 組成一組;為一組這種求解
4 回答

小唯快跑啊
TA貢獻1863條經(jīng)驗 獲得超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();
//方法二
//不過可以應(yīng)對不同的數(shù)組參數(shù),不過參數(shù)越多,性能就越糟糕
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每個子數(shù)組取出一個1個不同的數(shù),進行組合
$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();
- 4 回答
- 0 關(guān)注
- 382 瀏覽
添加回答
舉報
0/150
提交
取消