遞歸篇 3

題目大意

給定一排長度爲N(0<N<40)的方格,向裏面填入a,b,c三個數。要求僅數字C不能相鄰。問:N個格子有幾種填數方法

思路

當只有一個格子的時候就三種方法即F(1) = 3
當有兩個格子的時候:F(2) = 8,這個答案固然可以通過列舉得到,但怎麼通過上一個狀態去得到本狀態呢?

分析

每一個狀態無非是通過上一個狀態的其中一種情況得來的。無非是最後一個數字是C與否

N 1 2 3 4
末尾爲C : F1(N) 1 2 6 16
不爲C : F2(N) 2 6 16 44
總數 3 8 22 60

很容易想出來:我們設F(N)爲長度爲N的時候的方法數,F1(N)爲長度爲N時,末尾爲C的方法數,F2(N)不爲C的方法數顯然F(N) = F1(N) + F2(N)

更顯然的是F1(N) = F2(N-1),F2(N) = 2F(N-1) 以上三個式子合併即可得到終極遞推表達式:F(N) = 2F(N-1) + 2F(N-2)

代碼套路都一樣我就不放了,自己可以再好好想想那兩個式子是怎麼得到的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章