排列與組合小結
先看一道題:
一高使用率的四位密碼門鎖,怎樣設定密碼比較安全
? a) 密碼由兩種不同的數字組成 b) 密碼由三種不同的數字組成 c) 密碼由四種不同的數字組成
下面,先來說說一些基礎知識
1)排序與組合
c:是先拿人。
a:是拿完人後還要再排序。例子,第一名,第二名,第三名。小a,小b,小c。獲獎的情況。a(3 3)
ps:我們常遇到的如:10個人都不同,在其中取乙個人出來,放到第一名的位置上,常 寫:c(10 1),其實是這個意思是c(10 1)再a(1 1),所以更嚴謹的寫法是a(10 1)
2)簡單的排序與組合
1.5個人排序 排前五名:a(5 5)
5個人排序 排前四名:a(5 4):意思是從第一名到第四名依次有5,4,3,2個選擇。
4個人排序 排前五
名:a(5 4):可以換個思維思考,就是第乙個人有五個名次可以選,第二個可以有四個名次可以說,依次類推。
綜上:排序, n個人排m個位置(n>m),則a(n m)。如果n
2.同理c也類似。
3.同時,可推出組合的公式,拿上面的例子來說則因為a(10 3)=n
xa(3 3),所以可以命名為n=c(10 3)=a(10 3)/a(3 3)
3)可重複的排序與組合
1.重複的排序
如aaab有幾種排序法。思路如下:1)先把三個a都看做不同,如a1a2a3b,則一共有a(4 4)。2)現在把a都看做相同。注意剛才b一共可能有四個位置,而不管在哪個位置上(如aaab),a都重複了a(3 3)次,則一共有a(4 4)/a(3 3)=4次。
繼續推廣,假如現在有aabb,則有幾種排序呢?繼續上面的思路。1)看做不同,則一共有a(4 4)。2)看作相同,則在每個位置一共重複了多少次呢?a(2 2)xa(2 2).為什麼呢,假如現在是這樣aabb,本來就有一次,可看做不同的話,窮舉法,算了a1a1b1b2 a1a2b2b1 a2a1b1b2 a2a1b2b1。假如再是這樣的位置abab,也重複了四次。a1b1a2b2 a1b2a2b1 a2b1a1b2 a2b2a1b1。所以一共有a(4 4)/(a(2 2)xa(2 2)).
在推廣, 假如現在又aabcdeee,則一共有多少種呢,我們很容易猜想a(8 8)/(a(2 2)xa(3 3)).的確如此。下面來證明, 假如現在是這樣abacdeee,重複了多少次。自然根據乘法原則前面有a(2 2),後面有a(3 3),則一共有(a(2 2)xa(3 3),注意一旦像這樣abecdaee和前面就不是一種情況了,它是一種新情況了,也有自己的重複了。
ps:a(2 2)xa(3 3)可不等於a(5 5)啊。
2.高階拓展,上面的是重複的,然後全排列,假如現在是aabcd,排乙個和第二個,有多少種呢?引出新的思想,因為是計算一共有多少種,只要不重複,都可以累計。
不選a,一共有a(3 2),選a,則c(3 1)xa(2 2).然後相加即可。
如aaabcd 選3個呢a(3 3)+c(3 2)xa(3 3)+c(3 1)x3+1
重複的組合就簡單多了,例如aabcd,選取3個,有多少中組合呢?思路為,先分類,再分別計算。
4)繫結與是否相同
把4個不同的人分別分派到2個班級(班級無區別,班級2人),一共有多少種?
分析:相同 繫結。c(4 2)/a(2 2)=3種 (ab cd)(ac bd)(ad bc)
把4個不同的人分別分派到2個不同班級(班級有區別,班級2人),一共有多少種?
分析:不同 繫結。c(4 2)xa(1 1)xc(2 2)xa(1 1) =6種 簡寫c(4 2) (ab cd)(ac bd)(ad bc)再調換位置
推廣,如果6個人呢,不同的話:c(6 2)xc(4 2)
相同的話,則c(6 2)xc(4 2)/a(3 3)。因為假如現在1)都不同話,在則有c(6 2)xc(4 2)種。2)假如現在是這樣的組合,ab cd ef,因為不同的話,則有a(3 3),可是現在是相同的,則只有一種,因此重複了 a(3 3)次,所以,總共有c(6 2)xc(4 2)/a(3 3)。
最後總結:
1)排序與組合,重複。加法
原理:(4選3排列abcd,分不選a和
選a,a(3 3)+c(3 2) xa(3 3)=a(4 3).乘法原理: 由a經過b到c,a到b有3,b到c有2,則一共有3x2=6種。
2)基本的排序很簡單,加難度有:重複,不完全排列,繫結與間隔,相同與不相同。
3)掌握了基本原來後,要活學活用。
對了,差點忘了這道題了。因為經常使用,會留下指紋,不懷好意的人可以根據指紋來看出密碼是由哪些數字組成的。
1.四種數字的話,一共有a(4 4)=24種。
2.三種數字的話,一共有c(3 1)xa(4 4)/a(2 2)=36種
3.二種數字的話,分兩種情況,一種是每種數字都有兩個,則a(4 4)/(a(2 2)xa(2 2)=6種,一種是其中乙個數字有三個,則c(2 1)xa(4 4)/a(3 3)=8種,則 有8+6=14種。
所以,綜上,三種數字的最安全。
排列與組合
include using namespace std void perm int a,int n,int m,int out,int k,int used cout endl for int i 0 i n i void combine int a,int n,int m,int out,int ...
組合與排列
定義 從 n 個不同元素的集合中,任意取出 m m n 個元素排成一列 有先後順序 稱為乙個排列 此種排列的總數即為排列數,即叫做從 n 個不同元素中取出 m 和元素的排列數。公式 當 n m 時,分母為 0 1,即為全排列 推導 在具有 n 個數的集合中,順序取出 m 個數,成為乙個排列。上述過程...
排列與組合
試想這樣乙個問題 一組數比如 任取其中的三邊,會構成多少種不同的三角型 又或者任取其中四邊,會構成多少種不同的多邊形?如果取三邊,或五邊又如何?在一些情況下,我們需要解決處理排列和組合數的問題 先來看一下排列的情況 abcd 下標 1234 解決乙個陣列平移的問題並不難 abcd 向左移動4次,就可...