質問
無限の二次元平面では、我々は以下の仮定を行います。
図1は、一つだけの空間を移動させることができます。
2は、(あなたの目的地と仮定すると、「アップ」で、その後、あなたが左に、あなたはすぐに、あなたも上がることができますが、ダウンして行くことはできません行くことができます)戻ることはできません。
図3は、グリッドをすぐに崩壊は二度目を歩くことができません。
ステップ数を求めてN個の異なる実施形態を取る(同じがない限り、二段階プロセスでは、異なるプログラムであるとみなされます)。
入力
まず、所定の正の整数Cは、グループC試験データを表しました。
Cの次の行は、各列は、整数N(N <= 20)が含まれ、nは残すステップを表します。
出力
出力nステッププログラムの異なる方式の総数を取ってください。
出力用の各行。
入力サンプル
生
2
1
2
サンプル出力
生
。3
。7
主題によると、[1] = 3、 [2] = 7、 各分析後にさらに一歩進みます。
右側に上がると二方向にすぐ2つの左方向、右方向を移動する左、左には3つの方向がある
[3] = 17、導入することができる [4] = 41。分析条件はありa[i] = a[i - 2] + 2 * a[i - 1];
コードを完了します
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<math.h>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int m,n;
cin>>n;
int a[30];
while(n--)
{
cin>>m;
a[1] = 3;
a[2] = 7;
for(int i = 3; i <= m; i++)
a[i] = a[i - 2] + 2 * a[i - 1];
cout<<a[m]<<endl;
}
return 0;
}