1 Star 0 Fork 0

catyMap / AlgorithmNote

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
combinationSum4.go 677 Bytes
一键复制 编辑 原始数据 按行查看 历史
dogemap 提交于 2021-04-25 08:32 . 4/25新题
package main
import (
"fmt"
"sort"
)
// 本质上就是背包问题,都是用几个元素合成一个元素的组合问题,可以使用dp,但非常规递推dp,而是组合dp,所以复杂度是len(nums) * target
// 回溯和dp解的前提条件都是排序,这样才具备剪枝的完备性
func combinationSum4(nums []int , target int ) int {
sort.Ints(nums)
dp := make([]int,target + 1 , target + 1)
dp[0] = 1
for i := 1 ; i <= target ; i ++ {
for j := 0 ; j < len(nums) ; j ++ {
if idx := i - nums[j] ; idx >= 0 {
dp[i] += dp[idx]
}else {
break
}
}
}
return dp[target]
}
func main() {
fmt.Println(combinationSum4([]int{2,5,8},10))
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/dogemap/algorithm-note.git
git@gitee.com:dogemap/algorithm-note.git
dogemap
algorithm-note
AlgorithmNote
dc486f96f6c1

搜索帮助

344bd9b3 5694891 D2dac590 5694891