推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
hactf
V2EX  ›  Python

如何在一个数组中求出任意几个数的和等于给定数?( Python 实现)

  •  
  •   hactf · Jan 15, 2018 · 7854 views
    This topic created in 3216 days ago, the information mentioned may be changed or developed.

    本来一开始想尝试写个报账的小脚本,后来发现水比较深啊!希望有大佬可以指点迷津。

    18 replies  •  2018-01-16 13:19:21 +08:00
    neosfung
    neosfung
    Jan 15, 2018❤️1
    1
    3sum?
    quinoa42
    quinoa42
    Jan 16, 2018
    3
    https://en.wikipedia.org/wiki/Subset_sum_problem
    NP-complete 的,只能暴搜了
    所以用 @holajamc 的写法可能是比较优美的解决方案了
    geelaw
    geelaw
    Jan 16, 2018 via iPhone
    4
    naive 的动态规划对付这个问题应该已经够了吧…
    gnaggnoyil
    gnaggnoyil
    Jan 16, 2018
    6
    @geelaw 所谓动态规划做法相比于暴搜真正的优化不外乎是把状态从有序的数列给合并成无序的子集,那既然如此为何不直接对着所有子集枚举呢,就像 2L 所做的那样,还省下了用来记忆状态的空间.
    lrxiao
    lrxiao
    Jan 16, 2018
    7
    @gnaggnoyil 2^n*N 和 sum*N 一样吗..
    wizardoz
    wizardoz
    Jan 16, 2018
    8
    这不是动态规划的教材问题吗?
    holajamc
    holajamc
    Jan 16, 2018
    9
    我觉得关于动态规划的讨论已经偏离了楼主的需求= =
    heww
    heww
    Jan 16, 2018
    10
    我去年弄过这个东西,用遗传算法,有想不到的结果。
    gnaggnoyil
    gnaggnoyil
    Jan 16, 2018
    11
    @lrxiao sum*N 又是哪里来的……
    lrxiao
    lrxiao
    Jan 16, 2018
    12
    @gnaggnoyil dp 的状态数是 sum * N 啊..所以复杂度也是这个
    geelaw
    geelaw
    Jan 16, 2018 via iPhone
    13
    @gnaggnoyil 对于日常情况来说 给定数 常常远小于 2^条目数

    @holajamc #9 为什么?
    holajamc
    holajamc
    Jan 16, 2018
    14
    @geelaw
    我感觉动态规划已经不符合楼主的『小脚本』的需求了,即使暴力穷举也能在短时间内满足其需求
    geelaw
    geelaw
    Jan 16, 2018 via iPhone
    15
    @holajamc 是你觉得动态规划太复杂,但其实并非如此
    holajamc
    holajamc
    Jan 16, 2018
    16
    @geelaw
    我没有讲过动态规划复杂,相反我也在实际的代码中使用
    但我仍然没有觉得楼主的需求有**任何**必要使用动态规划
    ykk
    ykk
    Jan 16, 2018
    17
    这个 leetcode 有吧 小脚本建议穷举
    maggch
    maggch
    Jan 16, 2018
    18
    是要求方案数,还是输出所有方案,还是求是否存在。说清楚。不然没人能给你正确答案。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2278 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 12:16 · PVG 20:16 · LAX 04:16 · JFK 07:16
    ♥ Do have faith in what you're doing.