php数组组合的算法。
$keyword_list=['mysql ','紧张的啤酒;
//将两个要素作为一个整体数组求出
$ list=arrangement ($ keyword _ list,2 );
echo '
'; print_r($list;
//求出将两个要素作为一个整体排列的数组的个数
$ num=排列编号(count ($ keyword _ list ),2 );
echo $num . 'n ';
//将两个要素作为一个整体组合排列来求出
$ list=combination ($ keyword _ list,2 );
echo '
'; print_r($list;
//求出将两个要素作为一个整体组合起来的数组的个数
$ num=组合编号(count ($ keyword _ list ),2 );
echo $num . 'n ';
//阶乘
功能工厂($ n ) {
返回阵列产品(范围(1,$n );
}
//数组数
functionarrangementnum($n,$m ) {
返回factorial ($ n )/factorial ($ n-$ m );
}
//组合数
functioncombinationnum($n,$m ) {
returnarrangementnum($n,$m )/factorial ) $m;
}
//排列
函数阵列($ array,$m ) {
$r=array (;
$n=count($Array;
if($m=0||$m$n ) {
返回$ r;
}
for($I=0; $i $n; $i ) {
$b=$array;
$t=Array_splice($b、$i、1 );
if($m==1) {
$rjmdyg=$t;
} else {
$c=arrangement($b、$m - 1 );
Foreach($cas$v ) {
$rjmdyg=array_merge($t,$v );
}
}
}
返回$ r;
}
//组合
功能组合($ array,$m ) {
$r=array (;
$n=count($Array;
if($m=0||$m$n ) {
返回$ r;
}
for($I=0; $i $n; $i ) {
$t=Array($Array($I ) );
if($m==1) {
$rjmdyg=$t;
} else {
$b=Array_Slice($Array,$i 1);
$c=combination($b、$m - 1 );
Foreach($cas$v ) {
$rjmdyg=array_merge($t,$v );
}
}
}
返回$ r;
}
关于排列更高效的算法的方法
functionarrangementV2($array,$num ) {
$result=jmdyg;
if($num==1) {
Foreach($arrayas$key=$value ) {
$resultjmdyg=[$key=$value];
}
返回$ result;
}
kort($Array );
$Subarray=Array_Slice($Array,1,null,true );
$ subarray result=arrangement v2 ($ subarray,$num - 1 );
Foreach($arrayas$key=$value ) {
Foreach($Subarrayresultas$V1 ) {
$ext=Array_keys($v1 );
if($keyArray_shift ) $ext ) }{
$resultjmdyg=[$key=$value] $v1;
}
}
}
返回$ result;
}