php面试题 求解 请写出注释 谢谢~~
有x个字母,我们想要知道他们组合(字母可重复使用)的可能性,先给定一个最小单位的个数y,请写出一个方法,可以输出以y个字母为单位的组合可能性,能手动输入字母数组及每个单元...
有x个字母,我们想要知道他们组合(字母可重复使用)的可能性,先给定一个最小单位的个数y,请写出一个方法,可以输出以y个字母为单位的组合可能性,能手动输入字母数组及每个单元字母的个数y
例如:
a、b、c 两搭配结果是:
产生结果为:aa ab ac ba bb bc ca cb cc
a、b、c 三搭配结果是:
产生结果为:aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc
a、b、c、d 两搭配结果是:
产生结果为:aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd 展开
例如:
a、b、c 两搭配结果是:
产生结果为:aa ab ac ba bb bc ca cb cc
a、b、c 三搭配结果是:
产生结果为:aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc
a、b、c、d 两搭配结果是:
产生结果为:aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd 展开
1个回答
展开全部
<?php
function display($array){
if(is_array($array)) echo implode(" ",$array);
else echo $array;
}
function fun($arr,$y=1){//使用递归方法
$y<=0?$y=1:$y=intval($y);
is_array($arr)?"":$arr=str_split($arr);
if($y==1) return $arr;
if($y>count($arr)) return false;
$new = array();
for($i=0,$j=0;$i<count($arr);$i++){
$rs = fun($arr,$y-1);//从数组中取出少一个字母,如y=3时,取定arr[i]为第一位字母,再从数组中取出y-1个字母来组成新的字符串,从而达到长度为y的字符串
for($k=0;$k<count($rs);$k++){
$new[$j++] = $arr[$i].$rs[$k];
}
}
return $new;
}
display(fun("abc",3));
?>
function display($array){
if(is_array($array)) echo implode(" ",$array);
else echo $array;
}
function fun($arr,$y=1){//使用递归方法
$y<=0?$y=1:$y=intval($y);
is_array($arr)?"":$arr=str_split($arr);
if($y==1) return $arr;
if($y>count($arr)) return false;
$new = array();
for($i=0,$j=0;$i<count($arr);$i++){
$rs = fun($arr,$y-1);//从数组中取出少一个字母,如y=3时,取定arr[i]为第一位字母,再从数组中取出y-1个字母来组成新的字符串,从而达到长度为y的字符串
for($k=0;$k<count($rs);$k++){
$new[$j++] = $arr[$i].$rs[$k];
}
}
return $new;
}
display(fun("abc",3));
?>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询