组合数公式是指从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个被选择元素不包含该特殊元素,代码如下:
<?php //实现数学上的组合数算法 header("content-type:text/html;charset=utf-8"); /** * 在数组$a中任意m个元素组合 * * @param array $a 候选的集合 * @param int $n 候选的集合大小 * @param int $m 组合元素大小 * @param array $b 储存当前组合中的元素,这里储存的是元素键值 * @param int $M 相当一个常量,一直保持不变 * @return */ function combine($a,$n,$m,$b,$M){ for($i=$n;$i>=$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."<br/>"; $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."组合";

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境