|
查看: 833|回复: 2
|
请各位PHP高手指点!!!
[复制链接]
|
|
|
当四个不一样的字输入时,例如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> |
|
|
|
|
|
|
|
|
|
|
发表于 19-6-2007 09:11 PM
|
显示全部楼层
4/4个字不一样,permutation 出现的排列是24种款,
2/4个字一样,permutation排列出来的是12种款,
你所写的却依然是24,所以有重复是很正常的。
如果不要重复的,就要想办法把重复的去除。
我知道的方法,
可以把所有output出来的放进array,然后用array_unique()去除。
你也可以想你的方法。  |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 20-6-2007 01:38 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|