oj2568:統計プログラム

質問
無限の二次元平面では、我々は以下の仮定を行います。

図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;
}
公開された38元の記事 ウォン称賛27 ビュー3181

おすすめ

転載: blog.csdn.net/qq_45891413/article/details/104979266
おすすめ