【hdu 2569】ACM程序设计期末考试081230

彼岸

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1887    Accepted Submission(s): 1027


Problem Description
突破蝙蝠的包围,yifenfei来到一处悬崖面前,悬崖彼岸就是前进的方向,好在现在的yifenfei已经学过御剑术,可御剑轻松飞过悬崖。
现在的问题是:悬崖中间飞着很多红,黄,蓝三种颜色的珠子,假设我们把悬崖看成一条长度为n的线段,线段上的每一单位长度空间都可能飞过红,黄,蓝三种珠子,而yifenfei必定会在该空间上碰到一种颜色的珠子。如果在连续3段单位空间碰到的珠子颜色都不一样,则yifenfei就会坠落。
比如经过长度为3的悬崖,碰到的珠子先后为 “红黄蓝”,或者 “蓝红黄” 等类似情况就会坠落,而如果是 “红黄红” 或者 “红黄黄”等情况则可以安全到达。
现在请问:yifenfei安然抵达彼岸的方法有多少种?
 
 
 
Input
输入数据首先给出一个整数C,表示测试组数。
然后是C组数据,每组包含一个正整数n (n<40)。
 
Output
对应每组输入数据,请输出一个整数,表示yifenfei安然抵达彼岸的方法数。
每组输出占一行。
 
Sample Input
2 2 3
 
Sample Output
9 21
 
Author
yifenfei
 
Source
 
Recommend
yifenfei
 
 
 
 
 1 #include <iostream>
 2 #include <fstream>
 3 
 4 namespace ism
 5 {
 6     using namespace std;
 7     ifstream cin ("in.dat", ios::in);
 8 };
 9 
10 using std::cin;
11 using std::cout;
12 using std::endl;
13 /************************************************************/
14 #define MAXN 45
15 int iSum[MAXN];
16 
17 void iInit()
18 {
19     iSum[1] = 3;
20     iSum[2] = 9;
21     iSum[3] = 21;
22 
23     for (int i = 4; i < MAXN; i++)
24     {
25         iSum[i] = 2 * iSum[i-1] + iSum[i-2];
26     }
27 }
28 
29 int main()
30 {
31     iInit();
32     int t;
33     cin >> t;
34 
35     while (t--)
36     {
37         int iN;
38         cin >> iN;
39         cout << iSum[iN] << endl;
40     }
41     return 0;
42 }
43 
44 // end
45 // ism
原文地址:https://www.cnblogs.com/ismdeep/p/2604009.html