前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode题目 039. 组合总和

Leetcode题目 039. 组合总和

作者头像
用户6021899
发布2022-11-18 14:11:16
2190
发布2022-11-18 14:11:16
举报

先借这里更正上上篇 《模型训练好后 预测 numpy图片》代码里的一个错误。 模型(net)训练好后做预测时,须加上 net.eval()这行 代码,否则会发生预测准确率随 batchsize 变化的神奇现象。

代码语言:javascript
复制
    net.eval()  # 须增加这行代码,固定住batch normalization 和 drop out
    with torch.no_grad():
        outputs = net(images)
        _, predictions = torch.max(outputs, 1)

解题思路是回溯加剪枝,见Leetcode 用户liweiwei1419 的解答

https://leetcode.cn/problems/combination-sum/solutions/14697/hui-su-suan-fa-jian-zhi-python-dai-ma-java-dai-m-2/

代码我已略作精简。

代码语言:javascript
复制
class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        # candidates.sort()
        def dfs(candidates, begin, path, target):
            if target==1 or target < 0: # 根据条件 2 <= candidates[i] <= 40,target==1 时也无解
                return
            if target == 0: # 满足条件, 各candi 之和 为最初的target
                res.append(path)
                return

            for index in range(begin, size):
                candi = candidates[index]
                dfs(candidates, index, path + [candi],target - candi)  # 递归 和 剪枝(begin 不从0开始)

        size = len(candidates)
        if size == 0:
            return []
        path = []
        res = []
        dfs(candidates, 0, path,target)
        return res
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档