杭州エレクトリックOjをブラシタイトル(2047)

牛の牛肉のEOF文字列

件名の説明:

6つのチームに分かれて、今年の夏のACM訓練チーム18人の合計、。雄牛の04、XCとCOY組成物の05でEOFと呼ばれるチームがあります。一般的な生活の中でのトレーニングは、私たちは深い友情、この燃える情熱を記念して何かをする準備ができて雄牛、一瞬のための考えを確立し、雄牛は準備ができて、自宅から最高級のビーフジャーキーの一部をもたらしました上記だけ「E」「O」「Fの列の刻まれた 」 配列牛を抑制しつつ、nは、(1つまたは2つの文字であってもよいが、他の文字があってはならない)文字の三種類O隣接する状況は、怒りの目のように、彼は信じている、「OO」のルックスが登場効果が良くありません。

あなたは、NEW ACMerは、EOFの賛美者は、それの合計の要件を満たすためにどのように多くの異なる文字列をカウントする牛を助けることができますか?

PSは:社長はどのように幸せなビーフジャーキーの一部を取ったとき小さな秘密がある牛、杭州エレクトリック50周年に神秘的な贈り物として、ビーフジャーキーが刻まEOFを入れて準備ができて、それは考えられます!ここでは、牛にACMerハング電気のおかげに代わって、私をお許しください!

おかげで再び!

入力

テストケースは、複数の各テストケースのための1つの列、整数Nの組成、(0 <N <40)を含む入力データ。

出力

各テストケースのために、出力完全なコーティングは、例えば、各行の出力を要件を満たすために。

サンプル入力

1 
2

サンプル出力

3 
8

その答えによって:

#include<stdio.h>    
long long a[50];     //注意类型,不能太小       
int f(int n){        //递推
    a[0]=0;          //分析:若最后一个是O,则第n-1格不是O有2种选择,前面有2*f(n-2)种选择 
	a[1]=3;          //若最后一个不是O,则前面有2*f(n-1)种选择 
	a[2]=8;          //总共有2*(f(n-2)+f(n-1))种选择
	for(int i=3;i<=n;i++){
		a[i]=2*(a[i-1]+a[i-2]);
	}
}              
int main(){
    int n,i; 
    while(scanf("%d",&n)!=EOF){
        	f(n);
        	printf("%lld\n",a[n]);
	}
    return 0;
}

 

公開された54元の記事 ウォンの賞賛0 ビュー972

おすすめ

転載: blog.csdn.net/ZhangShaoYan111/article/details/104237226