[演算法]求一個排列組合的演算法

來源:互聯網
上載者:User
是這樣的
從0~9,a~z這36個字元中隨機抽取3個數,計算有多少種排列組合的方法
求大神指教


回複討論(解決方案)

36*36*36=46656

36*36*36

算了 自己寫出來了

/** * 排列組合演算法 * C($n,$m) * $n 元素的個數 * $m 從$n中取出的元素個數 * $num 組合情況的總數 **/function get_combination($n,$m) {if ((is_int($n) && is_int($m)) && ($m<=$n)){$a = 1;//初始化for ($i=1;$i<=$m;$i++){$a = $n*$a;$b = 1*$i;$n--;}$num = $a/$b;return $num;}}

組合公式:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
您認為您算的對嗎?

組合公式:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
您認為您算的對嗎?


你可以試試

36*35*34

按組合公式算出的是 7140
比你少一半


組合公式:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
您認為您算的對嗎?


你可以試試

echo get_combination(3,3);
輸出 2
怎麼也是不對的

echo get_combination(3,3);
輸出 2
怎麼也是不對的


恩 剛看了下也是
你寫的公式也是有錯誤
如果按你的公式
從2個數裡提出兩個數來排列 就等於1


從2個數裡提出兩個數來 組合 就是 1
排列 才是 2
p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!(規定0!=1).

補充以下 這3個數可以相同

比如從數組(1,2)裡提取隨機兩個數來組合 可以是
11
22
12
21


從2個數裡提出兩個數來 組合 就是 1
排列 才是 2
p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!(規定0!=1).



好了 自己把自己繞進去了
n^m就OK了
謝謝了
一直糾結排列組合去了
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.