1234567891011121314151617181920212223242526272829 |
- 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
- }
|