您的位置:首页 > 编程语言 > PHP开发

PHP字符串全排列

2016-02-21 00:17 447 查看
方法一:

$str = 'abc';
$a =str_split($str);
perm($a, 0, count($a)-1);

function perm(&$ar, $k, $m) {
if($k == $m){
echo join('',$ar), PHP_EOL;
}else {
for($i=$k; $i<=$m; $i++) {
swap($ar[$k], $ar[$i]);
perm($ar, $k+1, $m);
swap($ar[$k], $ar[$i]);
}
}
}
function swap(&$a, &$b) {
$c = $a;
$a = $b;
$b = $c;
}


方法二:

function output($temp,$level) {
for($i=0;$i<$level;$i++) {
echo $temp[$i];
}
echo PHP_EOL;
}
//产生全排列 递归参数传递一定要注意
function quanpai($arr,$flag,$level,$num,$temp) {
if($level>=$num) {
output($temp,$num);
return;
}
for($i=0;$i<$num;$i++) {
if($flag[$i]==0) {
$temp[$level]=$arr[$i];
$flag[$i]=1;
quanpai($arr,$flag,$level+1,$num,$temp);
$flag[$i]=0;
}
}
}
$str = 'abc';
$arr=str_split($str);
$len=count($arr);
$i=0;
$flag=array();
$temp=array();
while($i<$len){
$flag[$i]=0;
$i++;
}
quanpai($arr,$flag,0,$len,$temp);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: