LELE的RPG難題

不容易系列之(3)—— LELE的RPG難題

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15018    Accepted Submission(s): 5938


Problem Description
人稱“AC女之殺手”的超級偶像LELE最近忽然玩起了深沉,這可急壞了衆多“Cole”(LELE的粉絲,即"可樂"),經過多方打探,某資深Cole終於知道了原因,原來,LELE最近研究起了著名的RPG難題:

有排成一行的n個方格,用紅(Red)、粉(Pink)、綠(Green)三色塗每個格子,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色.求全部的滿足要求的塗法.

以上就是著名的RPG難題.

如果你是Cole,我想你一定會想盡辦法幫助LELE解決這個問題的;如果不是,看在衆多漂亮的痛不欲生的Cole女的面子上,你也不會袖手旁觀吧?


Input
輸入數據包含多個測試實例,每個測試實例佔一行,由一個整數N組成,(0<n<=50)。

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

Sample Input
12

Sample Output
36

Author
lcy

分析:假設有n個方格時塗法有f(n)種,在已有n-1個方格的情況下再增添第n個方格使得第n-1個方格由原來的最後一個方格成爲倒數第二個方格,這樣它可以選擇的顏色種類有變化。起初方格n-1作爲最後一個方格,它不能與方格1和方格n-2同色,此時,(1)當方格n-2與方格1同色時,n-1只需與n-2不同色即滿足條件,注意此時方格n-1與方格1必不同色,因而加上第n個方格時,第n個方格的顏色已經確定了(作爲最後一個方格,n只能塗與方格n-1、1不同的第三種色),既然如此,增加第n個方格對於總的塗法總數就沒影響。(2)當方格n-2與方格1不同色時,起初方格n-1作爲最後一個方格,由於要跟方格1和n-2不同,它可塗的顏色只有一種,而當加上方格n時,它就不需要和方格1不同,於是方格n-1可選的顏色種數+1,總的塗法總數加f(n-2),增加的這f(n-2)種塗法中,方格n-1均與方格1同色,此時方格n有兩種顏色可選(因爲只要跟方格n-1不一樣就同時與方格1不一樣),故增加的塗法爲2*f(n-2),即f(n)比f(n-1)大2*f(n-2),遞推關係:f(n)=f(n-1)+2*f(n-2),n>=4;這裏n>=4是因爲此時方格n-2不會是方格1

#include <iostream>
using namespace std;
int main()
{
    __int64 a[51]={0,3,6,6};
    int i;
    for(i=4;i<51;i++) a[i]=a[i-1]+2*a[i-2];
    while(cin>>i) printf("%I64d\n",a[i]);
    return 0;
}


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