排列組合 permutations and combinations

來源:互聯網
上載者:User

推薦《程式員的數學》中排列組合一章,講的太好了!

計數就是不重複,不遺漏的去將對象和整數對應起來。我們平時會簡單的數數,但是如果在計數對象多的不能直接數時,就需要找到計數對象與整數之間的“對應規則”了。為此必須理解計數對象具有怎麼樣的特性和結構。

一個例子,記憶體中排列著要處理的100個資料。從第一個開始依次編號為0號,1號。。。那麼最後1個資料的編號是多少呢?

答案:99。

程式員朋友肯定很少會答錯這道題。只要找到了“對應規則”--從0開始編號,最後一個資料的號是n-1.

只要掌握了普遍規則,那麼數字有多大都不會出錯,這點很重要。因此在計數問題中,最重要的是使用變數n將問題抽象出來。

置換

手中有三張牌A,B,C。現在問總共有多少張排法?--這種問題稱之為置換(substitution).

解法:

選取第一張牌時有3種選擇,選取第二張牌時有2種選擇,選擇第三張牌時只剩下一種選擇了。因此應該是3*2*1=6種排法。

由此可見此類問題是牌數的階乘n!(factorial),因乘數呈階梯狀而得名。0!=1而不是0.

這其實也是程式中我們常常說的“全排列”的問題,但是其實和數學中的“排列”不是一個哈。

為什麼這種排法稱為置換呢?因為相當於在所有牌中,讓兩張牌交換彼此的位置並得到所有的可能性。

排列

手中有5張牌A,B,C,D,E。現在問從5張牌中抽出3長,然後排列,有多少種排法?

解法也很簡單:

第一張牌有5種選擇,第二張牌有4中選擇,第三張牌有3種選擇。因此是5*4*3=60.

我們把從n長牌中抽出k張按一定順序排列的方法稱為排列(Permutation). 排列的總數記做

P kn = n!/(n-k)!

組合

手中有5張牌A,B,C,D,E。現在問從5張牌中抽出3張,不考慮順序,有多少種組合?

這種問題稱為組合(combination). 組合的計算方法可以首先計算出排列的總數,然後除以重複計算的部分(重複度)。

最後我們就得到了置換,排列和組合的關係:

以5張牌中取3張牌做排列為例,置換是“3張牌所有的排序可能”,組合是“從5張牌中抽出3張牌的所有可能”,排列是“5張牌中抽出3張牌,並做置換”。因此

“3張牌所有的排序可能” * “從5張牌中抽出3張牌的所有可能” = ”5張牌中抽出3張牌,並考慮順序做排列”

下面是兩道思考題

1, 現在要用顆粒狀的藥品調配一種新藥。藥品有A,B,C三種。調配規則如下:

從A,B,C中共取100粒; A,B,C這3種藥中至少有一種;不考慮藥品調配的順序。

問,新藥調劑有多少種組合?

2,現在有5張撲克牌,其中王2張,其他J,Q,K各一張。將5張牌列在一起,左端或右端至少有一張王牌的排列方法有多少種?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.