PHP头条
热点:

PHP中简单实现数学组合算法


组合数公式是指从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合,从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数,用符号c(n,m) 表示,下面我们来看用php来实现.

一、公式,有时候也表示成:

c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)

二、性质

c(n,m)=c(n,n-m);

三、递推公式

c(n,m)=c(n-1,m-1)+c(n-1,m)

等式左边表示从n个元素中选取m个元素,而等式右边表示这一个过程的另一种实现方法:任意选择n中的某个备选元素为特殊元素,从n中选m个元素可以由此特殊元素的分成两类情况,即m个被选择元素包含了特殊元素和m个被选择元素不包含该特殊元素,代码如下:

=$m;$i--){ 
	  $b[$m-1]=$i-1; 
	  if($m > 1){ 
	   $combine[]=combine($a,$i-1,$m-1,$b,$M); 
	  }else{ 
	   $onecombine=''; 
	   for($j=$M-1;$j>=0;$j--){ 
	    $onecombine.=$a[$b[$j]]; 
	   } 
	   $combine[]=$onecombine; 
	   $onecombine=''; 
	  } 
	 } 
	 return $combine; 
	} 
	/** 
	 * 递归输出数组 
	 * 
	 * @param array $arr 待输出的数组 
	 * @return int 返回数组元素个数*/ 
	function recursionarray($arr){ 
	 $i=0; 
	 foreach($arr as $value){ 
	  if(is_array($value)){ 
	   $i+=recursionarray($value); 
	  }else{ 
	   echo $value."
"; $i++; } } return $i; } $a=array('A','B','C','D','E','F','G','H','I','J'); $b=array(); $combine=combine($a,10,5,$b,5); $count=recursionarray($combine); echo "总共有".$count."组合";

www.phpzy.comtrue/php/32609.htmlTechArticlePHP中简单实现数学组合算法 组合数公式是指从n个不同元素中,任取m(mn)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合,从n个不同元素中取出m(mn)个元素的所有组合的个数...

相关文章

PHP之友评论

今天推荐