阿牛的EOF牛肉串 遞推求解

2021-09-25 10:54:28 字數 1384 閱讀 8103

問題描述:

今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛、xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面刻下乙個長度為n的只由"e" 「o」 "f"三種字元組成的字串(可以只有其中一種或兩種字元,但絕對不能有其他字元),阿牛同時禁止在串**現o相鄰的情況,他認為,"oo"看起來就像發怒的眼睛,效果不好。

你,new acmer,eof的崇拜者,能幫阿牛算一下一共有多少種滿足要求的不同的字串嗎?

input

輸入資料報含多個測試例項,每個測試例項佔一行,由乙個整數n組成,(0output

對於每個測試例項,請輸出全部的滿足要求的塗法,每個例項的輸出佔一行。

sample input

1

2

sample output

3

8

思路解決:

思考最後乙個字元只有三種情況:e,f

,o

e,f,o

e,f,o;

設長度為n時總刻法數為f(n

)f(n)

f(n);為e

ee時,n-1個字元可以隨便刻,故刻法數為:f(n

−1

)f(n-1)

f(n−1)

;為ff

f時,n-1個字元也可以隨便刻,故刻法數也為:f(n

−1

)f(n-1)

f(n−1)

;為oo

o時,n-1個字元不能為o

oo,因為連續的2個o

oo是不符合要求的,

因此o

oo的時候又被分為二種情況為e

ee或f:f:

f:綜上有:f(n

)=2∗

f(n−

1)+2

∗f(n

−2

)f(n)=2*f(n-1)+2*f(n-2)

f(n)=2

∗f(n

−1)+

2∗f(

n−2)

**參考:

#include

intmain()

;//n=40時超過int--->long long

for(

int i=

3;i<=n;i++

)printf

("%lld\n"

,z[n]);

}}

阿牛的EOF牛肉串 遞推

i 阿牛的eof牛肉串 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc...

阿牛的EOF牛肉串 (遞推)

今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面刻下乙個長度為n的只由 e o f 三種...

阿牛的EOF牛肉串 遞推dp

今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面刻下乙個長度為n的只由 e o f 三種...