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
展开
 我来答
slmhvip
2011-04-13 · 超过15用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:40.3万
展开全部
<?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));
?>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式