problem description
今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛、xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面刻下乙個長度為n的只由"e" "o" "f"三種字元組成的字串(可以只有其中一種或兩種字元,但絕對不能有其他字元),阿牛同時禁止在串**現o相鄰的情況,他認為,"oo"看起來就像發怒的眼睛,效果不好。
你,new acmer,eof的崇拜者,能幫阿牛算一下一共有多少種滿足要求的不同的字串嗎?
ps: 阿牛還有乙個小秘密,就是準備把這個刻有 eof的牛肉乾,作為神秘禮物獻給杭電五十周年校慶,可以想象,當校長接過這塊牛肉乾的時候該有多高興!這裡,請允許我代表杭電的acmer向阿牛表示感謝!
再次感謝!
input
輸入資料報含多個測試例項,每個測試例項佔一行,由乙個整數n組成,(0output
對於每個測試例項,請輸出全部的滿足要求的塗法,每個例項的輸出佔一行。
sample input
1 2sample output
3 8題意:讓你用e、o、f組成乙個長度為n的字串,o和o不能相遇,問你可以組成多少種不同的字串。
思路:
這個題是用遞迴來做的,那麼,為什麼使用遞迴呢?我們知其然,也要知其所以然。
題意是讓求有多少長度為n的字串,也有乙個限制條件。我做了很多題,發現凡是求第n個什麼什麼的,都遵循一定的規律,那麼我們要麼用公式求解、要麼用遞推求解、要麼用遞迴求解...
如果我們使用遞迴的話,那麼肯定要找到乙個對每乙個n都適用的規律,把這個問題化成若干個相似的小問題。遞迴的話,一般的順序是從後往前看,那我們從第n個往前看,看能不能找到乙個對每乙個n都適用的規律。我們建立乙個函式,f(n)表示e、o、f能組成多少個不同的長度為n的字串。
因為題目有限制條件,o和o不能相連,那我們對於第n個字元就要分類討論一下。第n個字元能填e、o、f三種情況。
第一種情況,如果我們第n個字元填e,那麼第n-1個字元填啥都可以,不受第n個字元的限制,在第n個字元確定為e的前提下,那麼前n-1個字元能組成的方案數和n個字元能組成的方案數是一樣的,即f(n)=f(n-1)。
第二種情況,如果我們第n個字元填f,和第一種情況相似,第n-1個字元填啥都可以,不受第n個字元的限制,在第n個字元確定為f的前提下,那麼前n-1個字元能組成的方案數和n個字元能組成的方案數是一樣的即f(n)=f(n-1)。
第三種情況,如果我們第n個字元填o,由於o和o不能相連,第n-1個字元可以填e、f兩種情況,那麼f(n)=2*f(n-1)。第n-1個字元如果填e,由情況1可知,第n-2個字元不受第n-1個字元限制,f(n-1)=f(n-2),第n-1個字元填f,與之相同。故,f(n)=2*f(n-1)=2*f(n-2)。
綜合以上三種情況,f(n)=f(n-1)+f(n-1)+2*f(n-2)=2[f(n-1)+f(n-2)]。
ok,到這裡,我們就發現這個問題對每乙個n都符合上面的三種情況,所以我們就能使用奇妙的遞迴了,至於遞迴終止條件,把前兩個方案數求出來就可以了。
#include #include #include #include using namespace std;
typedef long long ll;
ll f(ll n)
int main()
{
ll n;
while(cin>>n) cout《碎碎念:搜題解的時候發現有一博友,把前幾種方案數求出來後,直接看出來規律,頓時覺得:我擦,這哥們兒小學數學肯定超好。其實這也是一種做題方式,先求幾個方案,找找規律,心裡也有底了,若能很快做出來題,何樂而不為?當然,在平時,我們還是要注重演算法本身的。
阿牛的EOF牛肉串
題目描述 今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面刻下乙個長度為n的只由 e o...
阿牛的EOF牛肉串
problem description 今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面...
阿牛的EOF牛肉串
今年的acm暑期集訓隊一共有18人,分為6支隊伍。其中有乙個叫做eof的隊伍,由04級的阿牛 xc以及05級的coy組成。在共同的集訓生活中,大家建立了深厚的友誼,阿牛準備做點什麼來紀念這段激情燃燒的歲月,想了一想,阿牛從家裡拿來了一塊上等的牛肉乾,準備在上面刻下乙個長度為n的只由 e o f 三種...