佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 762|回复: 2

请各位PHP高手指点!!!

[复制链接]
美欣:) 该用户已被删除
发表于 19-6-2007 05:41 PM | 显示全部楼层 |阅读模式
当四个不一样的字输入时,例如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>
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
thank you very much
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 15-9-2025 12:43 AM , Processed in 0.098535 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表