/*
*题目:输入一个字符串,打印出该字符串中字符的所有排列。
*例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串
*abc、acb、bac、bca、cab和cba。
*/
str=
_GET[‘str’];
arr=array();
l =strlen($str);
//交换两个字符的位置
function swapStr(
n1,
n2, str){n =substr(
str,
n1, 1);
m=substr(
str,
n2,1);
str[
n2]=
n;
str[
n1] =
m;return
str;
}
//全排序算法
function TotalOrder(
k,
str, $n){
//定义静态变量
static $arr =array();
static $j =0;
//
if ($k >$n) {
$arr[$j] =$str;
$j ++;
}else{
for ($i=$k; $i <= $n; $i++) {
$str =swapStr($k, $i, $str);
TotalOrder($k+1, $str, $n);
// $str =swapStr($k, $i, $str);
}
}
return $arr;
}
num=TotalOrder(0,
str,
l−1);vardump(
num);