トピックの説明
猿は30レベル以下の丘を登ってジャンプします。猿は、山を1歩上るだけで1レベルまたは3レベルジャンプできます。さまざまな登山方法がいくつあるか調べてみてください。
サンプル入力
30
サンプル出力
58425
問題解決のアイデア:
- まず、f[k]の漸化式
を求めます。n=30とします。山を登る最後のステップは30番目のステップに到達することです。f[30]のさまざまな登り方があります。最初のものは29レベル(到着するために1レベルジャンプする)にあり、f [29]種があり、2番目は27レベル(到着するために3レベルジャンプする)にあり、f[27]種があります。したがって、次のようになります
。f [30] = f [29] + f [27]
など、一般に漸化式があります:
f [k] = f [k-1] + f [k-3](k> 3) - 初期条件を決定します
f[1]= 1; ie 1 = 1
f [2] = 1; ie 2 = 1 + 1
f [3] = 2; ie 3 = 1 + 1 + 1; 3 = 3 - 再帰の実装
上記の再帰関係と初期条件に従って、ループを設定し、再帰を適用してf[n]を見つけます。
コードセクション
#include<stdio.h>
long fun(int n)
{
long key;
if(n==1)
key=1;
else if(n==2)
key=1;
else if(n==3)
key=2;
else
key=fun(n-1)+fun(n-3);
return key;
}
int main()
{
int m;
long result;
scanf("%d",&m);
result=fun(m);
printf("%ld",result);
return 0;
}
この質問の鍵は、質問の漸化式を理解し、漸化式と初期条件に従ってそれを解決することです。