以下の内容はhttps://blog.hamayanhamayan.com/entry/2019/02/09/085641より取得しました。


京都大学の過去問 [yukicoder No.786]

https://yukicoder.me/problems/no/786

解説

https://yukicoder.me/submissions/315631

dpで解く。
dp[i] := i段目に到達するまでの登り方の組み合わせ数
すると、遷移は
dp[i + 1] += dp[i] // 1歩で1段
dp[i + 2] += dp[i] // 1歩で2段
となり、dp[N]が答え。
 
mod10^9+7も出てこないので、組み合わせDP初級としていいかも

int N;
ll dp[101];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    dp[0] = 1;
    rep(i, 0, N) {
        dp[i + 1] += dp[i];
        dp[i + 2] += dp[i];
    }
    cout << dp[N] << endl;
}



以上の内容はhttps://blog.hamayanhamayan.com/entry/2019/02/09/085641より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14