Python中递归子集和

2023-12-05

我很乐意得到一些帮助。

我有以下问题:

我得到了一个数字列表seq和一个目标数字,我需要写两件事:

  1. 返回的递归解决方案True如果存在等于目标数的子序列之和并且False否则。 例子:

    subset_sum([-1,1,5,4],0)   # True
    subset_sum([-1,1,5,4],-3)  # False
    
  2. 其次,我需要使用我在上一个解决方案中编写的内容来编写一个解决方案 但现在记忆化使用字典,其中键是元组:(len(seq),target)

对于第一点,这是我到目前为止所得到的:

def subset_sum(seq, target):
    if target == 0: 
        return True
    if seq[0] == target:
        return True
    if len(seq) > 1:
        return subset_sum(seq[1:],target-seq[0]) or subset_sum(seq[1:],target)
    return False

不确定我是否正确,所以如果我能得到一些意见,我将不胜感激。

对于数字 2:

def subset_sum_mem(seq, target, mem=None ):
    if not mem:
        mem = {}
    key=(len(seq),target)
    if key not in mem:
        if target == 0 or seq[0]==target:
            mem[key] = True
        if len(seq)>1:
            mem[key] = subset_sum_mem(seq[1:],target-seq[0],mem) or subset_sum_mem(seq[1:],target,mem)
        mem[key] = False

    return mem[key]

我无法通过记忆来给我正确的答案,所以我很高兴在这里得到一些指导。

感谢任何愿意提供帮助的人!


仅供参考,这是使用动态规划的解决方案:

def positive_negative_sums(seq):
    P, N = 0, 0
    for e in seq:
        if e >= 0:
            P += e
        else:
            N += e
    return P, N

def subset_sum(seq, s=0):
    P, N = positive_negative_sums(seq)
    if not seq or s < N or s > P:
        return False
    n, m = len(seq), P - N + 1
    table = [[False] * m for x in xrange(n)]
    table[0][seq[0]] = True
    for i in xrange(1, n):
        for j in xrange(N, P+1):
            table[i][j] = seq[i] == j or table[i-1][j] or table[i-1][j-seq[i]]
    return table[n-1][s]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中递归子集和 的相关文章

随机推荐

  • 在classpath中打印spring.xml的路径

    我在测试类中使用以下代码来加载类路径和 application content xml 文件中的所有 spring xml 文件 Override protected String getConfigLocations return new
  • 在 Mongo 2.6 和 Pymongo 2.7.1 上使用 maxTimeMS 参数进行聚合查询

    我无法在 Mongo 2 6 和 Pymongo 2 7 1 中使用 maxTimeMS 参数 根据本页的文档官方 Mongodb 聚合页面聚合方法应该返回一个Cursor目的 但是 当我在本地运行查询时mongod实例 2 6 pymon
  • AWS-CDK:有什么方法可以通过输入参数传递vpc cidr?

    我正在尝试将 vpc cidr 作为输入参数传递 如下所示 import Stack StackProps Construct CfnParameter from aws cdk core import Vpc SubnetType fro
  • 现有的 DAO 代码可以在 SQL Server 上运行吗?

    如果我将数据从 Access MDB 传输到 SQL Server VB 应用程序中的 DAO 代码是否会针对 SQL Server 工作 我意识到需要对初始连接调用进行更改 但还有其他需要更改的地方吗 这里有很多问题 如果您使用 ADP
  • 如何为每个页面调用一个方法?

    我正在使用 Spring MVC 编写一个应用程序 我有一个从数据库返回值的方法 我想在网站的标题中显示这些值 显示在所有页面上 我怎样才能做到这一点 我需要在每个控制器中调用这个方法 声明一个类 ControllerAdvice注解 然后
  • 通过 TCP 读取嗅探数据

    我正在开发一个应用程序 该应用程序正在侦听传入电脑的数据并将其存储在数据库中 当我尝试使用任何嗅探软件时 它会解码数据并且我可以读取它 但在我的代码中 我根本无法阅读它 它的格式是这样的 18222621516223418171188155
  • Hibernate:有第三级缓存吗?

    在一次求职面试中 一位招聘人员问我 hibernate 中有多少级缓存 所以我描述了1级和2级 他说正确 但还有第三级缓存 例如缓存一些不经常更改的表的结果 如 CURRENCY 或 COUNTRY 并在每个 12 24 您想要的时间 小时
  • 使用纯 JavaScript 获取点击元素的索引

    我需要知道单击元素的索引 不知道该怎么做 for i 0 i lt document getElementById my div children length i document getElementById my div childr
  • 将训练数据拆分为每个类的相同行数

    我有一个非常大的数据集 大约有 314554097 行和 3 列 第三列是班级 该数据集有两个类 0 和 1 我需要将数据分为测试数据和训练数据 要分割我可以使用的数据 from sklearn cross validation impor
  • 处理 contentEditable DIV 上的换行符

    我有一个问题contenteditableSAFARI CHROME 上的换行符 当我在 contentEditable 上按 返回 时 div 而不是创建一个 br 如 Firefox 他们创建了一个新的 div div Somethin
  • PostgreSQL 在触发器函数中动态修改新记录中的字段

    我有一个包含 ID 和用户名 以及其他详细信息 的用户表 以及引用该表的其他几个表 其中包含各种列名称 CONSTRAINT some name FOREIGN KEY columnname REFERENCES user userid 我
  • 在 OpenCV 中复制像素值

    我有 RGB 图像 例如尺寸为 2x2 如下 0 14 255 75 156 255 45 255 234 236 141 255 我想将每个像素 所有 RGB 通道 复制 2x2 次并获得如下所示的图像 0 14 255 0 14 255
  • 什么是 Irvine32 库以及我们为什么使用它?

    我想知道Irvine32汇编语言库是什么 我想要一个定义以及我们为什么使用这个库 我想知道汇编语言中的 Irvine32 库是什么 Irvine32 库是有用函数的集合 您可以查看在线文档了解它们的列表和更多详细信息 我想要一个防御以及为什
  • Google 日历 API - 插入活动 - 通过电子邮件通知组织者

    使用 Google 日历 API 事件 插入 我代表用户在用户的日历中创建一个事件并将他们设置为组织者 我还邀请了一位客人 我希望组织者收到类似于来宾可能收到的电子邮件通知 我尝试使用 sendUpdates 参数 但它只通知客人 有没有办
  • 我们如何使用这些指令在汇编中使用跳转?

    据我所知 组装中的跳跃基本上是从一个位置到另一个位置 说我们有 804828f 74 05 je XXXXXXX 8048291 e8 1e 00 00 00 call 80482b4 根据这本书 我真正要做的就是将 0x05 添加到 80
  • Visual Studios 在构建项目时反复出现 PDB API 调用失败

    所以我有一个项目位于另一个目录中 我将其复制并移动到另一个目录中 以便将其转储到之前运行早期版本代码的本地 git 存储库中 我知道为什么我要很好地复制这些内容 这是一个很长的故事并且无关紧要 在尝试在 Visual Studios 201
  • 奇怪的错误,链接在 jquery 'tabs+accordion' 中不起作用[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是新来的 到处寻找答案但找不到 我正在使用 Codecanyon 的这个很棒的选项卡
  • 用法相当不同

    我想在我的小型 Web 项目中使用这个出色的 Javascript 库 http prettydiff com 我已经下载了 PrettyDiff js 和 ViewDiff js 我一直在研究如何使用它 但似乎找不到任何有关如何获取 Ja
  • Composer 需要本地包

    我有几个正在协同开发的库 Foo 和 Bar 但在技术上仍然是独立的 以前我刚刚重新定义了自动加载器 Foo Foo src 但现在我已经向 Foo 添加了 Guzzle 依赖项 Bar 翻转了它的盖子 因为它不是它的依赖项之一 目录结构
  • Python中递归子集和

    我很乐意得到一些帮助 我有以下问题 我得到了一个数字列表seq和一个目标数字 我需要写两件事 返回的递归解决方案True如果存在等于目标数的子序列之和并且False否则 例子 subset sum 1 1 5 4 0 True subset