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

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)
}
上一篇:C#JSON解析而不是R


下一篇:meso-四(4-N十四胺基磺酰苯基)四苯并卟啉及其铁TTASPTBPFe、钴TTASPTBPCo、镍TTASPTBPNi、锌TTASPTBPZn的配合物-化学试剂