AcWing 80. 骰子的点数go
原题链接
简单
作者:
蜀道难
,
2021-06-01 17:07:21
,
所有人可见
,
阅读 306
func numberOfDice(n int) []int {
// 定义
f := make([][]int, n+1) // 从第一个骰子到第n个骰子 0 ~ n
for i := 0; i < n+1; i++ {
f[i] = make([]int, 6*n+1) // 投掷i次 可能出现的点数 两次 为2-12
}
f[0][0] = 1
for i := 1; i <= n; i++ {
for j := 1; j <= i * 6; j++ {
for k := 1; k <= min(j, 6); k++ {
f[i][j] += f[i-1][j-k] // 这一次只能由上一次的六项之内递推来 因为只能出现六种情况
}
}
}
res := make([]int, 0)
for i := n; i <= n * 6; i++ {
res = append(res, f[n][i])
}
return res
}
func min(i, j int) int {
if i <= j {
return i
}
return j
}