字符串排列组合 php,PHP 排列组合

初学PHP,闲暇写的排列组合,以十一运金为例,11,5的排列组合,可通用。(备注:初学,用字符串简单控制)。

$total = 0;

$result = array();

function test() {

combination(11,5,"",$total);

printf("Total %d", $GLOBALS['total']);

echo '
';

foreach ($GLOBALS['result'] as $value) {

echo implode('*',$value) . '
';

}

}

function combination($number,$count,$surfix) {

for($i=1;$i<=$number;$i++) {

$num = sprintf("%02d", $i);

if($count==1) {

if(strpos($surfix,$num)==false){

$result = $surfix. "*". $num;

$result = str_replace('A','',$result);

$temp = explode('*',$result);

sort($temp);

$key = implode('',$temp);

if($GLOBALS['result'][$key]==null) {

$GLOBALS['result'][$key]=$temp;

$GLOBALS['total']++;

}

unset($temp);

}

} else {

if($surfix=="") {

combination($number,$count-1,"A".$num);

} else {

if(strpos($surfix,$num)==false){

combination($number,$count-1,$surfix."*" .$num);

}

}

}

}

}

function permutation($number,$count,$surfix) {

for($i=1;$i<=$number;$i++) {

$num = sprintf("%02d", $i);

if($count==1) {

if(strpos($surfix,$num)==false){

$GLOBALS['total']++;

array_push($GLOBALS['result'], $surfix. "*". $num);

}

} else {

if($surfix=="") {

permutation($number,$count-1,"A".$num);

} else {

if(strpos($surfix,$num)==false){

permutation($number,$count-1,$surfix."*" .$num);

}

}

}

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值