演算法 錯排問題

2021-05-23 12:19:45 字數 852 閱讀 9008

錯排問題 就是一種遞推式,不過它比較著名且常用,所以要熟記!

方法一: 

n各有序的元素應有n!種不同的排列。如若乙個排列式的所有的元素都不在原來的位置上,則稱這個排列為錯排。任給乙個n,求出1,2,……,n的錯排個數dn共有多少個。

遞迴關係式為:d(n)=(n-1)(d(n-1)+d(n-2))

d(1)=0,d(2)=1

可以得到:

錯排公式為 

f(n) = n![1-1/1!+1/2!-1/3!+……+(-1)^n*1/n!] 

其中,n!=1*2*3*.....*n,

特別地,有0!=0,1!=1.

解釋: 

n 個不同元素的乙個錯排可由下述兩個步驟完成: 

第一步,「錯排」 1 號元素(將 1 號元素排在第 2 至第 n 個位置之一),有 n - 1 種方法。 

第二步,「錯排」其餘 n - 1 個元素,按如下順序進行。視第一步的結果,若1號元素落在第 k 個位置,第二步就先把 k 號元素「錯排」好, k 號元素的不同排法將導致兩類不同的情況發生:

1、 k 號元素排在第1個位置,留下的 n - 2 個元素在與它們的編號集相等的位置集上「錯排」,有 f(n -2) 種方法;

2、 k 號元素不排第 1 個位置,這時可將第 1 個位置「看成」第 k 個位置(也就是說本來準備放到k位置為元素,可以放到1位置中),於是形成(包括 k 號元素在內的) n - 1 個元素的「錯排」,有 f(n - 1) 種方法。據加法原理,完成第二步共有 f(n - 2)+f(n - 1) 種方法。 

根據乘法原理, n 個不同元素的錯排種數 

f(n) = (n-1)[f(n-2)+f(n-1)] (n>2) 。 

證畢。

演算法 錯排問題

今天我們再來學習乙個比較簡單的演算法,今天我們學習的是錯排問題,什麼是錯排問題呢?這樣說吧,假如現在書架上放有10本書,每本書都有固定的位置,現在讓你重新排列這些書,讓新排好的每一本書都不在原來的位置問你有多少種排列的情況。假如我們用num陣列來代表可能的情況,那麼我們容易知道num 1 0,num...

演算法 錯排演算法

1.認識 什麼是錯排演算法?舉個簡單的例子,教室裡有十個座位 1 10 十位同學分別坐在乙個不同的位置上 1 10 現要求打亂所有同學的位置,打亂規則如下 所有的同學都不能出現在原來的位置上,問有多少種打亂的方法?引出錯排問題 有n個正整數1,2,3,n,將這n個正整數重新排列,使其中的每乙個數都不...

習題 錯排問題

十本不同的書放在書架上。現重新擺放,使每本書都不在原來放的位置。有幾種擺法?這個問題推廣一下,就是錯排問題,是組合數學中的問題之一。考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。問題分析 要使每本書都不在原來放的位置,現在假設有n本書,...