代码如下 | 复制代码 |
/*分治法――直接选择 比如说a b c 首先将a之后的字符依次与a进行交换 1 b,a,c 2 c,b,a 注意这里少了一个原始数据 a,b,c。需要把原始数据也算如排列中 3 a,b,c
然后把字符移到第二个位置,将第二个位置之后的数分别与第二个位置的数进行交换 1 b,a,c ===> 11 b,c,a 2 c,b,a ===> 21 c,a,b 3 a,b,c ===> 31 a,c,b
**/ functionzuhe($arr,$begin){ if(!is_array($arr))return; $N=count($arr); if($begin==$N-1 ||$begin>$N||$begin<0)return; if($begin== 0){ print_r($arr);//输出原始数据 echo'' } //循环将初始值与第i个值交换后进行组合 for($i=$begin;$i<$N;$i++){
$t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t;
if($i!==$begin){//i==begin时的数已经输出过 print_r($arr); echo'' } zuhe($arr,$begin+1); $t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t;
} }
$arr=array('a','b','c','d'); //zuhe($arr,0);
/*分治法――直接插入 初始时从0个元素开始,输出初始序列,为组合的一个序列 当在来一个元素时只需将该元素放在该元素之前的元素组的不同的位置即组成了不同的排列 如已有元素组为a,b.新元素为c,把c分别与a,b进行交换即可(a,c,b);(c,b,a),在现有的排列上在新增元素 重复执行以上步骤 */ functionzuhe2($arr,$begin){ if($begin==0) { print_r($arr); echo""; //zuhe2($arr,$begin+1); } if($begin>=count($arr))return; zuhe2($arr,$begin+1);//begin时的排列上一次已产生,直接新增元素 for($i=$begin-1;$i>=0;$i--){ $t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t; print_r($arr); echo""; zuhe2($arr,$begin+1); $t=$arr[$begin]; $arr[$begin] =$arr[$i]; $arr[$i] =$t; } } |
摩尔庄园 安卓官方版v2.9.24091002S
摩尔庄园很多小伙伴一定都在小时候玩过,但随着我们年龄的增长淡
梦幻庄园最新版 官方正版v1.0.0
梦幻庄园是一款非常好玩的模拟经营类游戏,玩家在游戏中有一个属
合并梦幻岛免内购版 v2.1.0
合并梦幻岛无限内购版是游戏的破解版本,在该版本中为玩家解锁了
无悔华夏魅族版 2025最新版v3.5.194
无悔华夏魅族版是一款超级好用的模拟经营游戏。在这里玩家们需要
月影别墅官方安装包2025版 安卓版v2.3.24
月影别墅官方安装包2025版是一款匠心独具的乙女向剧情游戏,