srupのメモ帳

競プロで解いた問題や勉強したことを記録していくメモ帳

yukicoder No.44 DPなすごろく

問題

問題概要

省略

解法

簡単に漸化式がたつ、dp。dp[i] := (iマスに行く方法のパターン)とおくと、漸化式は、dp[i] = dp[i - 1] + dp[i - 2]となる。これは、iマス目に行くには、i-1マス目から1で進む、または i-2マス目から2で進むのどちらかであるっことから、成り立つ式である。

ミス

特になし。

コード

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;
typedef long long ll;    
#define rep(i,n) for(int i=0;i<(n);i++)
const int MAX_N = 51;

ll dp[MAX_N];

int main(void){
    int n; cin >> n;
    rep(i, n + 1) dp[i] = 0;
    dp[1] = 1, dp[2] = 2;
    for (int i = 3; i <= n; ++i){
        //漸化式
        dp[i] = dp[i - 1] + dp[i - 2];
    }
    cout << dp[n] << endl;
}