問題の説明は、
Nの長さを有する(1 <= N <= 10) 床の、与えられた二つの異なるタイル:長さ1の一種で、相互に長さ2は、数は限定されるものではありません。異なるレイの合計数で覆われ、この長さN床に?
例えば、床の長さlay-以下の5種類の合計4:
4 = 1 + 1 + 1 + 1
4 = 2 + 1 + 1
4 = 1 + 2 + 1
4 = 1 + 1 + 2
4 = 2 + 2
再帰的な方法で、上記の問題を解決するためのプログラミング。
入力フォーマットが
数だけNである、フローリング代表長
出力フォーマットは
、総タイルを敷設すべての異なる方法の数を表す出力
サンプル入力
4
出力例を
5
問題解決のアイデア:
DFS暴力が発見されました
#pragma GCCの最適化(2) の#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 インラインint型リード(){ int型のx = 0、F = 1。チャー C = GETCHAR()。一方、(C =!' - ' &&(C < ' 0 ' || C> ' 9 '))C = GETCHAR()。もし(C == ' - ')、F = - 1、C = GETCHAR()。一方、(C> = ' 0 ' && C <= ' 9 '10 + C- ' 0 '、C = GETCHAR()。リターン F * X;} のtypedef 長い 長LL。 const int型 MAXN = 1E5 + 10 。 int型のn; int型の合計。 int型ANS; ボイド DFS(int型の合計){ 場合(和> n)の リターン; もし(合計== N){ ANS ++ 。 リターン; } DFS(和 + 1 )。 DFS(和 +2 )。 } int型のmain() { CIN >> N。 DFS(0 )。 printf(" %dの" 、ANS)。 リターン 0 ; }