不容易系列之(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女的面子上,你也不會袖手旁觀吧?
有排成一行的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; }