diff options
Diffstat (limited to 'domino_tromino_tiling.rs')
-rw-r--r-- | domino_tromino_tiling.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/domino_tromino_tiling.rs b/domino_tromino_tiling.rs new file mode 100644 index 0000000..554f147 --- /dev/null +++ b/domino_tromino_tiling.rs @@ -0,0 +1,20 @@ +struct Solution; + +impl Solution { + pub fn num_tilings(n: i32) -> i32 { + const MOD: i32 = 1_000_000_007; + let (mut x, mut y, mut z) = (-1, 0, 1); + for _ in 1..=n { + let curr = (2 * z % MOD + x) % MOD; + x = y; + y = z; + z = curr; + } + z + } +} + +fn main() { + println!("{}", Solution::num_tilings(3)); // 5 + println!("{}", Solution::num_tilings(1)); // 1 +} |