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


今日の質問


2 xnタイル



もんだいぶんせき

  • 以前プログラマーの中で解答をしたことがあるからかもしれませんが、最初はどうやって解答するか全然分からず、正しい解答方法を考えることができます.経験を積んだようです.
  • nを生成すべき数字と見なし、演算が1,2しかないと考えるとフィボナッチであることを示す.演算は1,2,3のように問題を解決するのはほとんどこのような方法で解決されている.
  • 私の答え

    #include <iostream>
    using namespace std;
    int n;
    const int DIV = 10007;
    
    // 2xn 타일링
    int solution(){
        int fib[] = {1, 2};
        if(n < 3)
            return fib[n-1];
        for(int i=3;i<=n;i++){
            int sum = fib[0] + fib[1];
            fib[0] = fib[1];
            fib[1] = sum%DIV;
        }
        return fib[1];
    }

    別の答え

    #include <cstdio>
    
    int main()
    {
    	int n, temp1=0,temp2=1,ans;
    	for(scanf("%d",&n); n--;)
    		ans=(temp1%10007+temp2%10007)%10007, temp1=temp2, temp2=ans;
    
    	printf("%d",ans);
    }

    学ぶべきところ

  • 形は違うが同じ関数だ~