ステップジャンプ(ダイナミックプランニング入門)

3092 ワード

階段を跳ぶ
1つの階段にはn段の階段があり、毎回1段または2段歩くことができ、0段目からn段目まで歩くには全部で何種類の案があるかを聞く.
入力フォーマットは、整数nを含む1行です.
出力フォーマットは、シナリオ数を表す整数を含む1行です.
データ範囲1≦n≦15入力サンプル:5出力サンプル:8
考え方:0段目から1段目までの方法1段目の階段0段目から2段目の階段2段目までの方法1種は0-2段目の階段1種は1段目までの階段2段目の階段0段目から3段目までの2種の方法1種は0-2-3種は0-1-2-2-3種(ここで0-1-2-2はすでに前の方法に含まれている)
逆から見るとnステップのシナリオ数=n-1ステップのシナリオ数+n-2のシナリオ数
#include 

using namespace std;

int arr[20];

int main()
{
    int n;
    cin >> n;
    arr[1] = 1; arr[2] = 2;
    for(int i = 3;i <=15;i++){
        arr[i] = arr[i-1]+arr[i-2];
    }
    cout << arr[n];

    return 0;

}