1. 程式人生 > >錯位排列及有關例題

錯位排列及有關例題

其中 mic 要求 n-2 span 位置 狀態 求解 size

求n個數(不相同)錯位排列的個數。

何為錯位排列?定義如下:對於n的一個排列a1,a2,a3...an。

如何求解錯位排列?

考慮動態規劃的解法。

前i個元素時如何進行狀態轉移?

(一)首先由於要求錯位排列,第i個元素肯定不會放在自己的位置上,故第i個元素的位置有i-1種選擇。

(二)對於剩下的i-1個元素,選擇其中的一個元素k。這時候k有兩種選擇:

  1. 放在第i個元素的位置上,宏觀上相當於i與k的位置互換了。而剩下的i-2個元素依然要求錯位排列。

  2. 不放在第i個元素的位置上,則相當於剩下的i-1個元素全部進行錯位排列。

綜上,我們可以得到:f[i] = (i-1) * ( f[i-1] + f[i-2] );

\(F_{n} = F_{n-1} + F_{n-2}\)

錯位排列及有關例題