题解 | #附加题#

附加题

https://www.nowcoder.com/practice/58b04ed2865f4ff4921290f1bd4ee486

package main

import (
	"fmt"
)

func main() {
	a := 0
	fmt.Scan(&a)
	arr := make([]int, a+1)
	for i := 0; i < a; i++ {
		fmt.Scan(&arr[i])
        arr[i]--
	}
	fmt.Printf("%v", answer(arr))
}

func answer(a []int) int {
    rooms := len(a)
	dp := make([]int, rooms)
	for i := 0; i < rooms-1; i++ {
		dp[i+1] = (dp[i]*2 - dp[a[i]] + 1000000009) % 1000000007
	}
	return dp[rooms-1]
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:55
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务