123456789101112131415161718192021222324252627282930 |
- package main
- import "fmt"
- const MOD int = 1000000007
- func main() {
- var n int
- fmt.Scan(&n)
- color := make([]int, n)
- for i := range color {
- fmt.Scan(&color[i])
- }
- dp := make([]int, n+1)
- dp[0] = 1
- for i := 1; i <= n; i++ {
- dp[i] = dp[i-1]
- var set [10]bool
- set[color[i-1]] = true
- for j := 1; 0 < i-j; j++ {
- if !set[color[i-j-1]] {
- dp[i] = (dp[i] + dp[i-j-1]) % MOD
- set[color[i-j-1]] = true
- } else {
- break
- }
- }
- }
- fmt.Println(dp[n])
- }
|