|
@@ -0,0 +1,29 @@
|
|
|
+const MOD int = 1000000007
|
|
|
+
|
|
|
+func checkRecord(n int) int {
|
|
|
+ // A, L, P
|
|
|
+ var dp = [2][3]int{{1, 1, 0}, {1, 0, 0}}
|
|
|
+ for i := 1; i < n; i++ {
|
|
|
+ var nxt [2][3]int
|
|
|
+ for A := 0; A <= 1; A++ {
|
|
|
+ for L := 0; L <= 2; L++ {
|
|
|
+ nxt[A][0] += dp[A][L] // Append P
|
|
|
+ if L > 0 {
|
|
|
+ nxt[A][L] += dp[A][L-1] // Append L
|
|
|
+ }
|
|
|
+ if A > 0 {
|
|
|
+ nxt[A][0] += dp[A-1][L] // Append A
|
|
|
+ }
|
|
|
+ nxt[A][L] %= MOD
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dp = nxt
|
|
|
+ }
|
|
|
+ sum := 0
|
|
|
+ for i := range dp {
|
|
|
+ for _, v := range dp[i] {
|
|
|
+ sum = (sum + v) % MOD
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sum
|
|
|
+}
|