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; }