2-cut-balloon.go 472 B

123456789101112131415161718192021222324252627282930
  1. package main
  2. import "fmt"
  3. const MOD int = 1000000007
  4. func main() {
  5. var n int
  6. fmt.Scan(&n)
  7. color := make([]int, n)
  8. for i := range color {
  9. fmt.Scan(&color[i])
  10. }
  11. dp := make([]int, n+1)
  12. dp[0] = 1
  13. for i := 1; i <= n; i++ {
  14. dp[i] = dp[i-1]
  15. var set [10]bool
  16. set[color[i-1]] = true
  17. for j := 1; 0 < i-j; j++ {
  18. if !set[color[i-j-1]] {
  19. dp[i] = (dp[i] + dp[i-j-1]) % MOD
  20. set[color[i-j-1]] = true
  21. } else {
  22. break
  23. }
  24. }
  25. }
  26. fmt.Println(dp[n])
  27. }