LeetCode 790 Dominoとトロミノタイル階段を登ります

ここでのオリジナルタイトルリンク:https://leetcode.com/problems/domino-and-tromino-tiling/

トピック:

2x1のドミノ形状、および「L」トロミノの形状:私たちは、2つのタイルの種類があります。これらの形状は、回転させてもよいです。

XX < -ドミノ

XX < - "L"トロミノ
X

Nを考えると、2×Nボードタイルにどのように多くの方法がありますか?10 ^ 9 + 7を法あなたの答えを返します。

(タイリングにおいて、すべての正方形がタイルで覆われなければならない。二つのタイリングが異なる場合やタイリングのうちの正確に1つのタイルによって占有両方正方形を有するように、ボード上の2つの4方向の隣接セルが存在する場合のみ)。

例:
入力:3 
出力:5 
説明:
5種類の方法を以下に示し、異なる文字は異なるタイルを示しています
XYZ XXZ XYY XXY XYY 
XYZ YYZ XZZ XYY XXY

注意:

  • Nは範囲内であろう  [1, 1000]

ソリューション:

いくつかの簡単な例を描き、ルーチンを見つけます。

DP [i]がタイルへの方法2 * iのボードを示してみましょう。 

 

 スペースを節約するために、配列のint型変数instreadを使用してください。

時間計算:O(N)。

スペース:O(1)。

ACのJava:

1  クラスソリューション{
 2      INT M =十億七3      公共 INT numTilings(int型のN){
 4          であれば(N <= 0 ){
 5              リターン 0 6          }
 7          
8          であれば(N == 1 ){
 9              リターン 1 10          }
 11          
12          であれば(N == 2 ){
 13              リターン 2 14          }
 15          
16          であれば(N == 3 ){
17              リターン 5 18          }
 19          
20          INT W1 = 1 21          INT W2 = 2 22          INT W3 = 5 23          のためにint型 I = 4; iが= Nを<; Iは++ ){
 24              INTは W4 =(W3 * 2%M + W1)%M。
25の              W1 =をW2、
26の              W2 =部W3、
27の              W3 =部W4;
28          }
 29          
30          リターンW3。
31      }
 32 }

同様に階段を登ります

おすすめ

転載: www.cnblogs.com/Dylan-Java-NYC/p/11526332.html