《錯排》codevs 1697 要寫信

2021-08-09 07:41:36 字數 973 閱讀 8601

去題目的傳送門

題面很長,說白了,就是要你求錯排n個數的方案數

表示看完錯排的通項公式的推導過程之後,整個人都不好了。但是這個題不用通項公式,只知道遞推式就好了。

遞推式:f[n]=(n-1)*(f[n-1]+f[n-2])

來一波遞推式的推導過程:

當n個編號元素放在n個編號位置,元素編號與位置編號各不對應的方法數用d(n)表示,那麼d(n-1)就表示n-1個編號元素放在n-1個編號位置,各不對應的方法數,其它類推.

第一步,把第n個元素放在乙個位置,比如位置k,一共有n-1種方法;

第二步,放編號為k的元素,這時有兩種情況:

⑴把它放到位置n,那麼,對於剩下的n-1個元素,由於第k個元素放到了位置n,剩下n-2個元素就有d(n-2)種方法;

⑵第k個元素不把它放到位置n,這時,對於這n-1個元素,有d(n-1)種方法;

綜上得到

d(n) = (n-1) [d(n-2) + d(n-1)]

特殊地,d(1) = 0, d(2) = 1.

**:

#include

#include

#include

#include

using

namespace

std;

int n;

struct hh

f[110];

hh add(hh x,hh y)

return ans;

}hh muti(int x,hh y)

if(ans.a[l+1]) ans.cnt=++l;

else ans.cnt=l;

return ans;

}int main()

return

0;}

演算法 錯排問題

錯排問題 就是一種遞推式,不過它比較著名且常用,所以要熟記!方法一 n各有序的元素應有n!種不同的排列。如若乙個排列式的所有的元素都不在原來的位置上,則稱這個排列為錯排。任給乙個n,求出1,2,n的錯排個數dn共有多少個。遞迴關係式為 d n n 1 d n 1 d n 2 d 1 0,d 2 1 ...

遞迴 錯排公式

這個問題推廣一下,就是錯排問題,是組合數學中的問題之一。考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。n個元素的錯排數記為d n 研究乙個排列錯排個數的問題,叫做錯排問題或稱為更列問題。錯排問題最早被尼古拉 伯努利和尤拉研究,因此歷史上...

數論 錯排公式

1.定義 乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。n個元素的錯排數記為d n 2.推導 遞推 首先將第乙個元素錯排,假設將第乙個元素放到第k位,那麼對於第k位的元素,有兩種情況 1.k放在第1位,此時相當於對處第1位與第k位的n 2個...