題目描述:
突破蝙蝠的包圍,yifenfei來到一處懸崖面前,懸崖彼岸就是前進的方向,好在現在的yifenfei已經學過御劍術,可御劍輕鬆飛過懸崖。
現在的問題是:懸崖中間飛着很多紅,黃,藍三種顏色的珠子,假設我們把懸崖看成一條長度爲n的線段,線段上的每一單位長度空間都可能飛過紅,黃,藍三種珠子,而yifenfei必定會在該空間上碰到一種顏色的珠子。如果在連續3段單位空間碰到的珠子顏色都不一樣,則yifenfei就會墜落。
比如經過長度爲3的懸崖,碰到的珠子先後爲 “紅黃藍”,或者 “藍紅黃” 等類似情況就會墜落,而如果是 “紅黃紅” 或者 “紅黃黃”等情況則可以安全到達。
現在請問:yifenfei安然抵達彼岸的方法有多少種?
輸入描述:
輸入數據首先給出一個整數C,表示測試組數。
然後是C組數據,每組包含一個正整數n (n<40)。
輸出描述:
對應每組輸入數據,請輸出一個整數,表示yifenfei安然抵達彼岸的方法數。
每組輸出佔一行。
輸入:
2
2
3
輸出:
9
21
題意:
字面意思
題解:
簡單遞推
代碼:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn = 50;
int f[maxn];
void init(){
f[1] = 3;
f[2] = 9;
for(int i = 3; i <= 40; i ++){
f[i] = 2 * f[i - 1] + f[i - 2];
}
}
int main(){
int t,n;
scanf("%d",&t);
init();
while(t--){
scanf("%d",&n);
printf("%d\n",f[n]);
}
return 0;
}