编程语言
首页 > 编程语言> > 算法- 两种方式实现上楼梯递归和动态规划

算法- 两种方式实现上楼梯递归和动态规划

作者:互联网

package step

import (
"fmt"
)
var count = 0
func UpStep(canChoose,iChoose []int,all int) {
if all < 0 {
return
}
if all == 0 {
//fmt.Println(iChoose)
count++
return
}
for _,choose := range canChoose {
cho := append(iChoose,choose)
UpStep(canChoose,cho,all - choose)
}
}
/*
将每个台阶的值用数组存下 思想也是从少到多,
*/
func UpStep1(canChoose []int,all int) {
if all < 0 {
return
}
var iChoose []int
for i := 0;i <= all;i++{
iChoose = append(iChoose,0)
}
for _,cho := range canChoose {
iChoose[cho] = 1
}
for i := 1; i <= all ; i++ {
for _,cho := range canChoose {
if i - cho < 1 {
continue
}
iChoose[i] = iChoose[i] + iChoose[i - cho]
}
}
fmt.Println(iChoose[all])
fmt.Println(iChoose)
}

标签:递归,int,fmt,cho,算法,choose,canChoose,楼梯,iChoose
来源: https://www.cnblogs.com/Bin-DuS/p/14760271.html