OpenJudge百錬練習問題解答(C++)--問題4108:カモシカの数-Number Of Antelope

6765 ワード

問題:
合計時間制限:1000 msメモリ制限:65536 kB
説明
草原にはカモシカがいて、生まれた時が0歳だったと仮定すると、3年の成長を経て、3歳の時に大人になり、繁殖し始めます.それぞれのカモシカは3歳の年に2匹のカモシカを産み、この大人のカモシカは永遠のパートナーとなり、その後の毎年2匹のカモシカを産んだ.
1対のカモシカが産んだ2匹のカモシカが必ず1雄1雌であると仮定すると、カモシカは3歳の時に必ず別の同年のカモシカを見つけて永久のパートナーになり、繁殖を開始する.また、このカモシカは50歳以内に死なないと仮定した.
もし0年目に草原に0歳のカモシカがいたら、n年目の年末に草原にカモシカが何対いますか.
例えば、1年目と2年目、草原にはカモシカが1対いた.3年目、このカモシカは大人になったので、カモシカを産んだので、3年目の年末には草原に2組のカモシカがいました.
入力
1行目は正の整数m(1<=n<=15)であり、m個の問題が共有されていることを示す.
次のm行は、各行がn(0<=n<=40)の数字であり、n年目を表す.
しゅつりょく
全部でm行で、行ごとに1つの数字があり、対応するn番目の年末の草原にカモシカが何対かいることを示しています.
サンプル入力:
3134

サンプル出力:
123

ヒント
結果はint範囲を超えない
解:
#include<iostream>
using namespace std;
int f(int a)
{
	
	if(a>=0&&a<=2)
	{
		return 1;
	}
	else if(a==3)
	{
		return 2;
	}
else{
 return f(a-2)+f(a-3)+f(a-4);
}
}
int main()
{
	int n;
	cin>>n;
	int a[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<n;i++)
	{
		cout<<f(a[i])<<endl;
	}
	return 0;
 }