当四个不一样的字输入时,例如a,b,c,d。答案好好的(排列24);但是,当有一样的字时,例如:a,a,a,b OR a,b,b,c, 有些字重复显示,为什么?如何显示有多少组排列在银幕上,谢谢!请高手们尽快指导小女子一下,因为我的 project快要交了,万分感激!!!
<html>
<head>
<title>Permutation</title>
</head>
<body>
<?php
$yourArr=array("a","b","c","d");
$n=count($yourArr);
for ($i=0; $i <= $n; $i++) $pArr[$i]=$i;
function PrintPerm()
{
global $yourArr,$pArr,$n;
for ($i=1; $i <= $n; $i++) echo $yourArr[$pArr[$i]-1];
echo "<br>";
return;
}
function swapThem($i,$j)
{
global $pArr;
$temp = $pArr[$i];
$pArr[$i] = $pArr[$j];
$pArr[$j] = $temp;
}
function NextPerm()
{
global $pArr,$n;
$k = $n-1;
while ($pArr[$k] > $pArr[$k+1]) $k--;
if ($k == 0) return(0);
else
{
$j = $n;
while ($pArr[$k] > $pArr[$j]) $j--;
swapThem($j,$k);
$r = $n;
$s = $k+1;
while ($r > $s)
{
swapThem($r,$s);
$r--;
$s++;
}
}
PrintPerm();
return(1);
}
PrintPerm();
while (NextPerm());
?>
</body>
</html> |