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

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

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
1 2
 


 

Sample Output
3 6
 


分析:

很明顯,n個格子只需要先塗n-1個,再塗一個就好,但是有一個問題,題目中要求了第一個和最後一個不能是同一種顏色,所以n-1個的時候兩端是兩種不同的顏色,那麼此時再塗最後一個湊成n個的時候就是1種了,所以就是s[n-1]*1。  而很明顯,n個格子,第n-1個是可以和第一個同色的,那麼同色的時候,是s[n-2]*1*2。所以就是這兩種方案,加起來就好。綜上:s[n]=s[n-1]+s[n-2]*2

代碼如下:

#include <stdio.h>
int main()
{
	int i,n;
	__int64 a[51]={0,3,6,6};
	for (i=4;i<51;i++)
		a[i]=a[i-1]+a[i-2]*2;
	while (scanf("%d",&n)!=EOF)
		printf("%I64d\n",a[n]);
	return 0;
}
 


 

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