我得到的问题是
一个孩子正在跑一个有 n 级台阶的楼梯,并且一次可以跳 1 级、2 级或 3 级。实施一种方法来计算孩子可以通过多少种可能的方式跑上楼梯。
http://play.golang.org/p/bpjIkMm9jH
package main
import "fmt"
func CountWaysDP(n int, mm map[int]int) int {
if n < 0 {
return 0
} else if n == 0 {
return 1
} else if mm[n] > -1 {
return mm[n]
} else {
mm[n] = CountWaysDP(n-1, mm) +
CountWaysDP(n-2, mm) +
CountWaysDP(n-3, mm)
return mm[n]
}
}
func main() {
mm := make(map[int]int)
fmt.Println(CountWaysDP(10, mm), mm)
}
这只是给了我 0 地图 []。事实证明,动态递归在以下行结束:
else if mm[n] > -1
那么我将如何使用动态规划来解决这个问题呢?这与破解编码面试中的解决方案完全相同......
开满天机
阿晨1998
四季花海
相关分类