モンキークライミング-再帰的アルゴリズム(詳細なグラフィックとテキスト)

トピックの説明

猿は30レベル以下の丘を登ってジャンプします。猿は、山を1歩上るだけで1レベルまたは3レベルジャンプできます。さまざまな登山方法がいくつあるか調べてみてください。

サンプル入力

30

サンプル出力

58425

問題解決のアイデア:

  1. まず、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)
  2. 初期条件を決定します
    f[1]= 1; ie 1 = 1
    f [2] = 1; ie 2 = 1 + 1
    f [3] = 2; ie 3 = 1 + 1 + 1; 3 = 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;
}

この質問の鍵は、質問の漸化式を理解し、漸化式と初期条件に従ってそれを解決することです。

おすすめ

転載: blog.csdn.net/weixin_45745641/article/details/106676243