背包任务中所有组合的数量

2023-12-14

有一个经典背包问题。我对这个问题的版本有点不同。

给定一组物品,每个物品都有一个质量,确定包装物品的组合数量,以使总重量小于或等于给定的限制。

例如,有 5 个具有质量的项目:1, 1, 3, 4, 5。有一个错误limit = 7。有以下几种组合:

1 + 3
1 + 4
1 + 5
1 + 1 + 3
1 + 1 + 4
1 + 1 + 5
3
3 + 4
4
5

有没有一种方法可以不暴力地计算组合的数量?


这是一种解决方案:

items = [1,1,3,4,5]
knapsack = []
limit = 7

def print_solutions(current_item, knapsack, current_sum):
    #if all items have been processed print the solution and return:
    if current_item == len(items):
        print knapsack
        return

    #don't take the current item and go check others
    print_solutions(current_item + 1, list(knapsack), current_sum)

    #take the current item if the value doesn't exceed the limit
    if (current_sum + items[current_item] <= limit):
        knapsack.append(items[current_item])
        current_sum += items[current_item]
        #current item taken go check others
        print_solutions(current_item + 1, knapsack, current_sum )

print_solutions(0,knapsack,0)

prints:

[]
[5]
[4]
[3]
[3, 4]
[1]
[1, 5]
[1, 4]
[1, 3]
[1]
[1, 5]
[1, 4]
[1, 3]
[1, 1]
[1, 1, 5]
[1, 1, 4]
[1, 1, 3]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

背包任务中所有组合的数量 的相关文章

  • 哪种算法可以有效地找到路径一定距离内的一组点?

    给定一组点s 一组 x y 坐标 和由连接一组点的线段组成的路径l 描述一种有效的算法 可用于从s在指定距离内d路径的l 其实际应用可能是查找沿城市之间的公路旅行路径 10 英里内任意位置的餐馆列表 For example in the f
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • 给定一个零索引数组 & 该数组的平衡索引[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给出一个由 N 个整数组成的零索引数组 A 该数组的平衡索引是任何整数 P 满足 0 P 例如 考虑以下由 N 8 个元素组成的数组
  • 通过保留和复制来复制向量,还是通过创建和交换来复制向量更有效? [复制]

    这个问题在这里已经有答案了 我正在尝试有效地复制向量 我看到两种可能的方法 std vector
  • Python求矩阵动态规划中最大的平方

    我有一个矩阵如下 Python matrix o o o oo o o o ooo o o oo o o oo 其中 o 是一个障碍 我需要找到这个矩阵中最大的正方形 并替换相应的 带有 x 如下所示 xxxo o o xxxoo xxxo
  • 在小于 O(N) 的时间内找出点是否位于 N 个(可能重叠)矩形之一内

    我有一个图像 我想在鼠标移动到某些矩形区域时显示工具提示 矩形区域最多可达 1000 个 但是 仅检查每个矩形中是否有点 时间复杂度为 O N 导致移动鼠标时界面无响应 有没有办法在小于 O N 的时间内完成它 我可以预先对矩形进行排序 我
  • 在 Perl 中确定范围重叠的最快方法

    我有两组范围 每个范围都是一对整数 开始和结束 表示单个较大范围的某些子范围 两组范围的结构与此类似 当然 将替换为实际数字 a ranges a 1 gt start gt end gt a 2 gt start gt end gt a
  • 检测重复文件

    我想检测目录树中的重复文件 当发现两个相同的文件时 将仅保留其中一个重复文件 并删除其余的重复文件以节省磁盘空间 重复是指具有相同内容的文件 但文件名和路径可能不同 我正在考虑为此目的使用哈希算法 但不同的文件有可能具有相同的哈希值 因此我
  • 查找按降序排序的向量中严格小于某个键的第一个元素

    据我了解 可以使用 find if STL 算法函数来完成此任务 如下所示 long long int k k key scanf lld k auto it find if begin v end v k auto e return e
  • 平均值大于或等于 k ​​的最长连续子数组

    考虑一个包含 N 个整数的数组 找到最长的连续子数组 使其元素的平均值大于 或等于 给定数字 k 显而易见的答案具有 O n 2 复杂度 我们可以做得更好吗 我们可以通过在 O n 时间内从所有值中减去 k 将这个问题简化为 sum gt
  • 给定一个数字 0-9 的数组和一个整数 n,找到可由输入数组组成且小于 n 的所有整数

    问题是这样的 给你一个数字 0 9 的数组和一个整数n 该数组可能包含任何给定数字的重复项 找到所有可以通过连接输入数组中的数字形成的整数并且小于n 输入数组中的数字可以在输出的元素中重复 例如 输入为 2 5 8 且 n 223 则输出应
  • 加密单个int的方法

    如何以廉价的方式对 32 位 int 进行双向加密 使每个数字都映射到该空间中的其他 int 并以难以预测的方式映射回来 当然 并且不需要在映射表中预先存储 42 9 亿个整数 您想要的是 32 位分组密码 不幸的是 大多数分组密码都是 6
  • 获取大于某个数字的元素个数

    我正在尝试解决以下问题 数字被插入到容器中 每次插入数字时 我需要知道容器中有多少元素大于或等于当前插入的数字 我相信这两个操作都可以以对数复杂度完成 我的问题 C 库中有标准容器可以解决这个问题吗 我知道std multiset可以在对数
  • 根据先前日期进行预测:值数据

    我有一些类似时期的数据集 这是当时人们的介绍 时间大约有一年 数据并不是定期收集的 而是相当随机的 每年 15 30 个条目 来自 5 个不同的年份 The graph drawn from the data for each year l
  • 用于查找遍历图中所有顶点的路线的更好算法是什么?

    所以我有以下问题 给定 x x y 维度的网格 计算路线数 穿过它 从一个角开始 假设左上角 并结束于 另一个 右下 并穿过每个顶点 因此 我当前的方法只是通过尝试每条可能的路径并计算到达终点并遍历每个节点的路径来进行暴力破解 虽然它有效
  • 期望最大化抛硬币的例子

    我最近一直在自学期望最大化 并在这个过程中给自己举了一些简单的例子 http cs dartmouth edu cs104 CS104 11 04 22 pdf http cs dartmouth edu cs104 CS104 11 04
  • 用二进制数、常规数字和格雷编码填充矩阵

    我有一个包含 1 s 或 0 s 的矩阵 用于创建二进制数 其宽度为n 对于 n 2 和 n 3 它看起来像 00 000 01 001 10 010 11 011 100 101 110 111 等等 现在我正在使用以下代码来生成它 in
  • R中不重复的组合

    我试图获取变量元素长度为 3 的所有可能组合 虽然它部分地与combn 一起工作 但我没有完全得到我正在寻找的输出 这是我的例子 x lt c a b c d e t combn c x x 3 我得到的输出看起来像这样 1 2 3 1 a

随机推荐

  • 为什么 psycopg2 INSERT 需要这么长时间才能循环运行以及如何加快速度?

    我正在尝试在 for 循环中使用 psycopg2 INSERT 将 source lat source long destination lat destination long 行从 Pandas 数据帧插入到 PostgreSQL 表
  • 将编码信息添加到 FOR XML 的结果中[重复]

    这个问题在这里已经有答案了 我有一个脚本 它在 SQL 2008 中使用 FOR XML 返回 XML 有没有办法在输出的开头添加版本和编码信息 最终 我计划将输出保存在文件中 例如 现在我的输出看起来像这样
  • Google Admin sdk 目录 403

    我正在尝试将 googleapi 2 0 与服务帐户一起使用 以在企业域上的用户上使用 Directory gooogle admin sdk 我已按照建议进行操作 this例如 并准备了一个 希望工作 的poc java代码 像这样的东西
  • Cocos2dx Android 构建错误:“arm-linux-androideabi-g++:没有这样的文件或目录”

    我下载了最新的cocos2dx 3 10 和NDK r11 我执行的时候出现以下错误cocos compile p android android studio Error AndroidDev android ndk r11 toolch
  • Delphi 代码格式化程序

    是否有任何实用程序可以重新格式化 Delphi 代码 EDIT 我使用的是德尔福2006 一些反馈 感谢所有回答这个问题的人 我一直在使用 JCF 代码格式化程序 它运行良好 我的代码已格式化为对象 Pascal 风格指南 您可以尝试 绝地
  • 如何使用 php 和 jquery 验证向导表单?

    简要说明这个简单的 jQuery 向导如何工作 会话用于保存每个步骤的数据 由一个会话变量组成 用于保存我们所处的步骤 由一个用于存储表单数据的会话变量组成 每次更改步骤时 我们都会使用 ajax 请求保存表单数据和会话中的步骤 如果数据被
  • Python-要列出的字符串

    我需要将列表转换为字符串并将字符串返回到列表 有一种 python 方法可以实现这种行为吗 l1 aa bb cc s str l1 l2 cast string to list s print l2 aa bb cc 使用序列化库 例如j
  • 这是在 ES6 中克隆对象的好方法吗?

    谷歌搜索 javascript克隆对象 带来了一些非常奇怪的结果 其中一些已经过时了 有些太复杂了 是不是很简单 let clone original 这有什么问题吗 这很好用于浅克隆 The 对象传播是 ECMAScript 2018 的
  • LLVM插入内在函数Cos

    我正在尝试将内部 cos 函数调用插入到 LLVM pass 我在 FunctionPass 中的代码 std vector
  • jquery 验证器 - 即使无效,表单仍然会被提交

    我的表单上有一些带有基本规则的字段 验证器插件在填写表单本身时表现良好 但是 提交时会出现问题 因为即使尚未输入有效的电子邮件地址或在其他文本框中输入任何内容之前 它仍然会提交 这是我的测试功能 function submit form c
  • 将 Python win32evtlog 对象转换为 xml

    我有一个使用 win32evtlog 来获取和显示不同事件的应用程序 我想将显示限制为特定级别的事件 但 win32evtlog 不会返回此信息 似乎您可以将事件转换为 XML 然后提取此信息 但我无法弄清楚如何将事件从循环获取到 XML
  • Threetenbp:解析带有时区名称的日期时出现解析异常

    我正在尝试解析 EEE dd MMM yyyy HH mm ss zzz 格式的日期 例如使用 Threeten 的 DateTimeFormatter 的 Tue 16 May 2017 07 44 48 GMT 之类的字符串 但是 似乎
  • 检查 DirectoryInfo.FullName 是否是特殊文件夹

    我的目标是检查 DirectoryInfo FullName 是否是特殊文件夹之一 这就是我正在做的事情 检查每个特殊文件夹的directoryInfo FullName 如果它们相等 DirectoryInfo directoryInfo
  • 跨进程PostMessage、UIPI限制和UIAccess=”true”

    出于安全原因 我的应用程序的 UI 模块使用high 强制完整性级别 除了一件事之外 其中的所有内容都运行良好 为了与旧版本兼容 我需要能够让用户向 UI 模块发出命令行调用 目前该机制的工作原理如下 Windows 资源管理器中的快捷方式
  • firebase:admin.auth().updateUser()导致auth/user-token过期

    我成功使用电话号码进行了身份验证 我可以检查firebase auth currentUser我已经登录了 然后我调用我的 firebase 管理路由admin auth updateUser uid somevalues 设置用户显示名称
  • java 8流分组和求和双精度

    我对 java 8 中的流非常陌生 所以我的方法可能是错误的 我有 2 个对象如下 object1 BigDecimal amount Code1 code1 Code2 code2 Code3 code3 String desc obje
  • 对具有多个提交的表单进行建模和验证

    我正在尝试找出使用 ASP Net Core 2 建模和验证具有多个表单标签和多个提交按钮的表单的正确方法 我拥有的是一个表单 用户可以在其中输入用户名和密码并登录 或者输入他们的名字 姓氏和手机号码并注册 这是我的模型 public cl
  • 从单独文件中的类访问 MainWIndow 控件

    I add a TextBlock到 XAML 中的主窗口 我需要更改位于单独 cs 文件中的单独类中的 TextBlock 文本 我尝试了以下方法 private static fooNameSpace MainWindow tW1 tW
  • matlab无法捕获子函数中的错误

    我正在尝试在代码中实现错误报告系统 因此我在启动程序时运行的函数周围放置了一个 try catch 它是一个编程 GUI 因此大多数子函数都是按钮或其他 GUI 元素的回调 然而 每当这些子函数中抛出错误时 它都不会被捕获 一些子功能在其他
  • 背包任务中所有组合的数量

    有一个经典背包问题 我对这个问题的版本有点不同 给定一组物品 每个物品都有一个质量 确定包装物品的组合数量 以使总重量小于或等于给定的限制 例如 有 5 个具有质量的项目 1 1 3 4 5 有一个错误limit 7 有以下几种组合 1 3