aboutsummaryrefslogtreecommitdiff
path: root/domino_tromino_tiling.rs
diff options
context:
space:
mode:
Diffstat (limited to 'domino_tromino_tiling.rs')
-rw-r--r--domino_tromino_tiling.rs20
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
+}