[コードテストC+]2 xnタイル2


今日の質問


2 x nタイル2



方法

  • 以前に解いた2 xnタイル応用問題
  • 簡単に2銭の値に2を乗せればいいです.状況は2倍になる!
  • 2より前の値*2と1より前の値を加算し、
  • を終了する.

    私の答え

    #include<iostream>
    using namespace std;
    int n;
    const int DIV = 10007;
    
    int solution(){
        if(n == 1)
            return 1;
        int dp[2];
        dp[0] = 1;
        dp[1] = 3;
        for(int i=2;i<n;i++){
            int temp = (dp[0]*2 +dp[1])%DIV;
            dp[0] = dp[1];
            dp[1] = temp;
        }
        return dp[1];
    }

    別の解釈

    #include <stdio.h>
    
    int main(void) {
     
        int D [1001] = {};
        int N;
        D[1] = 1;
        D[2] = 3;
     
        scanf("%d", &N);
     
        for (int i = 3; i <= N; i++)  {
            D[i] =  (D[i-1] + 2*D[i-2]) % 10007;
        }
     
        printf("%d\n", D[N] % 10007);
        return 0;
    }

    学ぶべきところ

  • もともと答えは一つの問題だったのでそっくり~!