<kbd id="9plqc"><label id="9plqc"></label></kbd>

        <th id="9plqc"></th>
        1. <center id="9plqc"><video id="9plqc"></video></center>
          <sub id="9plqc"><form id="9plqc"><pre id="9plqc"></pre></form></sub>
          <nav id="9plqc"><form id="9plqc"><legend id="9plqc"></legend></form></nav>
          排列數(shù) A(n, m) 與組合數(shù) C(n, m) 的求法 您所在的位置:網(wǎng)站首頁(yè) 八字的排列組有多少種算法 排列數(shù) A(n, m) 與組合數(shù) C(n, m) 的求法

          排列數(shù) A(n, m) 與組合數(shù) C(n, m) 的求法

          2025-07-15 06:46| 來(lái)源: 網(wǎng)絡(luò)整理| 查看: 265

          一、什么是排列,什么是組合? 排列

          從 n 個(gè)不同元素中,任取 m(m≤n) 個(gè)元素,按照一定的順序排成一列,叫做從 n 個(gè)不同元素中取出 m 個(gè)元素的一個(gè)排列。

          組合

          從 n 個(gè)不同元素中,任取 m(m≤n)個(gè)元素并成一組,叫做從 n 個(gè)不同元素中取出 m 個(gè)元素的一個(gè)組合。

          通俗地講 A (排列):指把幾個(gè)不但選出來(lái),還要進(jìn)行排列 如 A42A_4^2A42? 是指從 4 個(gè)物品中選出 2 個(gè)來(lái),而且對(duì)它們的順序是有要求的,順序不一樣,結(jié)果則不一樣。A42=4×3=12A_4^2 =4×3=12A42?=4×3=12 C (組合):是指從 n 個(gè)數(shù)中選取幾個(gè)出來(lái),不排列,只組合。如 C42C_4^2C42? 是指從 4 個(gè)中選 2 個(gè),不管它們的內(nèi)部的順序。C42=C_4^2 =C42?= 4×32×1=6\cfrac{4×3}{2×1} = 62×14×3?=6. 總結(jié):排列與元素的順序有關(guān),組合與順序無(wú)關(guān)。如 231 與 213 是兩個(gè)排列;2+3+1 的和與 2+1+3 的和是一個(gè)組合。

          在這里插入圖片描述 由上可得,排列數(shù)和組合數(shù)的求法代碼如下:

          (1) 排列數(shù)

          m 就是需要減 1 的次數(shù)。

          int A(int n, int m) { int res = 1; for (int i = m; i >= 1; i--) { res *= n; //n × n-1 × n-2 × ... n-m,m就是需要減1的次數(shù) n--; } } (2) 組合數(shù)

          與求排列數(shù)一樣,求組合數(shù)也是對(duì)公式的實(shí)現(xiàn),不過(guò)組合這里有個(gè)小技巧可以對(duì)代碼進(jìn)行優(yōu)化,那就是利用組合的互補(bǔ)率:Cnm=Cnn?mC_n^m = C_n^{ n - m}Cnm?=Cnn?m? 來(lái)減少循環(huán)執(zhí)行次數(shù)。

          版本一

          由上可得 Cnm=C_n^m=Cnm?= Anmm!\cfrac{A_n^m}{m!}m!Anm??,而 m!m!m! =Amm=A_m^m=Amm?,故代碼可表達(dá)為:

          int C(int n, int m) { m = Math.min(m, n-m); int numerator = A(n, m); //分子 int denominator = A(m, m); //分母 return numerator / denominator; } 版本二

          根據(jù) Cnm=C_n^m=Cnm?= Anmm!\cfrac{A_n^m}{m!}m!Anm??,但我們注意到,AnmA_n^mAnm? 的代碼實(shí)現(xiàn)中,m 一直遍歷到 1,所以在方法 A() 的代碼實(shí)現(xiàn)中我們簡(jiǎn)單的加入對(duì) m!m!m! 的求解即可,不需要為了求組合數(shù)還得多寫(xiě)一個(gè)求排列數(shù)的函數(shù)。

          int A(int n, int m) { int up = 1; //分子 int down = 1; //分母 m = Math.min(m, n-m); for (int i = m; i >= 1; i--) { up *= n; //累乘得到分子 n--; down *= i; //累乘得到分母 } return up / down; }


          【本文地址】

          公司簡(jiǎn)介

          聯(lián)系我們

          今日新聞

          推薦新聞

          專(zhuān)題文章
            CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有
            黄色免费网站在线看,韩国精品在线观看,韩国美女一区二区,99国产热 尖扎县| 沙洋县| 马尔康县| 息烽县| 怀远县| 廊坊市| 桐庐县| 定南县| 甘泉县| 永年县| 吴江市| 旌德县| 大田县| 出国| 昌宁县| 安顺市| 南乐县| 德兴市| 丹凤县| 沙湾县| 鄂温| 屯门区| 景宁| 陇川县| 蓬安县| 张家界市| 麻城市| 洪洞县| 沙雅县| 榕江县| 南昌市| 拉孜县| 阜宁县| 锦屏县| 舟曲县| 四子王旗| 化州市| 伽师县| 班玛县| 平罗县| 邯郸市| http://444 http://444 http://444 http://444 http://444 http://444