問題描述:
今年的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 三種...