通过将集合划分为两个子集来查找可以由集合形成的最大总和

2023-12-03

说明

Given a set of numbers S.
Find maximum sum such that
Sum(A1) = Sum(A2)
Where, A1⊂S and A2⊂S and A1⋂A2=∅
And Sum(X), is the sum of all elements within the set X.

Approach

暴力破解

最简单的方法是:

print maximumSum(0,0,0)
def maximumSum(index,sum1,sum2):
  ans=0
  if sum1 == sum2:
    ans=sum1
  if index >= len(S):
    return ans
  m1=maximumSum(index+1,sum1+S[index],sum2)
  m2=maximumSum(index+1,sum1,sum2+S[index])
  m3=maximumSum(index+1,sum1,sum2)
  return max(m,m1,m2,m3)

Time Complexity:O(2N)
Space Complexity:O(1)

还有比这更好的方法吗?
选修的:
我想知道给定的问题是否是 NP 完全问题。

Edit:

Limits

1 2 时间限制:60秒(根据所使用的语言而有所不同)


是的,这是NPC问题分区问题

如果集合的和很小,您可以看到伪多项式算法部分

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

通过将集合划分为两个子集来查找可以由集合形成的最大总和 的相关文章

  • 在 O(log n) 中查找排序矩阵(行 n 列)中的数字 [重复]

    这个问题在这里已经有答案了 假设我有一个矩阵 MxN 其行和列已排序 每行中的所有元素均按升序排列 每列中的所有元素均按升序排列 所有元素均为整数 无法做出其他假设 Example 1 5 8 20 2 9 19 21 12 15 25 3
  • 如何生成排列?

    我的问题是 给定一个长度为 n 的列表 L 和一个整数 i 使得 0 对于任意 i 和任意 2 个列表 A 和 B perm A i 和 perm B i 都必须将 A 和 B 的第 j 个元素映射到 A 和 B 相同位置的元素 对于任何输
  • 以小于 O(n^2) 的复杂度计算两个数组中的互质对数量

    我在挑战中遇到了这个问题 有两个数组 A 和 B 的大小均为 N 我们需要返回对的计数 A i B j 其中gcd A i B j 1 and A i B j 我只能想到暴力方法 它超出了少数测试用例的时间限制 for int i 0 i
  • DPLL算法定义

    我在理解 DPLL 算法时遇到一些问题 我想知道是否有人可以向我解释它 因为我认为我的理解是不正确的 我理解的方式是 我采用一些文字集 如果每个子句都为真 则模型为真 但如果某些子句为假 则模型为假 我通过查找单元子句递归地检查模型 如果有
  • 如何验证无锁算法?

    从理论上讲 至少应该可以对无锁算法进行暴力验证 只有这么多的函数调用组合 是否有任何工具或正式推理过程可以实际证明无锁算法是正确的 理想情况下它还应该能够检查竞争条件和 ABA 问题 注意 如果你知道一种方法来证明一点 例如 只证明它不受
  • 生成字符串及其子字符串列表的排列的算法

    我已经忘记这个算法有一段时间了 假设我得到了字符串 cccaatt 我试图生成重复字母的每个子串的所有可能变体 EG cccaatt 作为输入将返回 猫 卡特 猫 卡特 ccat 卡特 卡特彼勒 卡特彼勒 cccat cccat cccaa
  • 用于整数分区的优雅 Python 代码 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我尝试编写代码来解决标准整数分区问题 维基百科 http en wikipedia org wiki Partition 28numb
  • 找到不(必要)与二进制矩阵中的图像边界对齐的最大矩形

    我在用这个解决方案 https stackoverflow com questions 2478447 find largest rectangle containing only zeros in an nn binary matrix在
  • 寻找下一个素数的最佳方法(Java)

    我被要求编写一个程序以最佳方式找到下一个素数 我编写了这段代码 但找不到最佳答案 有什么建议么 public static int nextPrime int input input now find if the number is pr
  • 识别鼠标移动的算法

    我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软
  • 为什么《破解编码面试》这个例子的时间复杂度是O(k c^k)?

    该问题来自 破解编码面试 第 6 版 问题 V1 11 以下代码打印长度为 k 的所有字符串 其中字符 是按排序顺序排列的 它通过生成所有长度的字符串来做到这一点 k 然后检查每个是否已排序 什么是运行时间 package QVI 11 P
  • 用于计算三角函数、对数或类似函数的算法。仅限加减法

    我正在修复 Ascota 170 古董机械可编程计算机 它已经开始工作了 现在我正在寻找一种算法来展示其功能 例如计算三角或对数表 或类似的东西 不幸的是 从数学运算来看 计算机只能进行整数的加减法 从 1E12到1E12的55个寄存器 甚
  • 处理流星中的长服务器端计算

    我正在使用 jimp https www npmjs com package jimp https www npmjs com package jimp 在meteor JS中生成图像服务器端 换句话说 我正在使用递归算法 计算 图像的像素
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • “包含字符串”的快速索引

    在我的应用程序中 我有多达数百万个短字符串 大部分短于 32 个字符 我想实现一个带有附加列表的搜索框 该列表仅包含包含在搜索框中输入的整个字符串的元素 如何预先建立索引来快速找到此类字符串 所有排序的 STL 容器都会检查整个字符串 对于
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们

随机推荐

  • 您可以在 .NET 中打开 JPEG、添加文本并重新另存为 JPEG 吗?

    我想在 NET 4 0 中编写一个小程序 它将打开 jpg 或 jpeg 文件 向图像添加一行文本 然后将图像重新保存为 jpg 有谁知道最简单的方法来做到这一点 谢谢你的帮助 像这样的东西 var filePath D Pictures
  • R ggplot2更改*具体*线型图例的背景颜色

    这是一个类似的问题 但解决方案不适用于scale linetype manual 类似但不一样的SO问题 当我使用legend key参数它只插入一个element rectbehind我的体重秤上的线条 见下图 现在我的图表上的所有内容都
  • 如何使用 javascript 从单选按钮列表中查找所选项目

    我需要使用 javascript 从单选按钮列表中查找所选项目 这是我的代码
  • 多级JSON解析

    我在写信多级json解析程序 并且能够获取第一级列表 但在点击第一级列表项时不显示第二级列表 简而言之 我列出了在尝试列出点击类别的视频时遇到的问题的类别 我正在做这样的事情 Main Activity Listing Categories
  • 我应该使用 Java 和哪些 Stun 库?

    Java 我试图编写自己的 STUN 客户端 但似乎我犯了错误 因此 大多数时候它都会被冻结 所以我想知道哪些 STUN 客户端库可用于 Java 以便开始使用 跟进 同时尝试跟进 仍然没有涉及NAT 防火墙后面的解决方案 第1步 击晕等级
  • Firebase 事件保证:事件顺序

    我刚刚开始使用 Firebase 并对以下 URL 中列出的 Firebase 事件保证有疑问 活动保证 其中一项保证规定 来自单个客户端的写入将始终写入服务器并按顺序广播给其他用户 此保证是否还意味着客户端将按照事件广播的顺序接收单个客户
  • HTML 音频标签中未加载音频

    我正在测试音频 HTML 标签 它正在我的测试环境中运行 但由于某种原因不在我的生产环境中运行 我只是使用
  • Scipy griddata 在循环/内存泄漏内不起作用

    我在循环内使用 Scipy 的 griddata 时遇到问题 基本上发生的情况是 在循环运行时内存会无限制地增长 要重现该问题 只需将示例放入 http docs scipy org doc scipy reference generate
  • for循环读取带空格的文件名

    我正在尝试扫描目录中的文件以查找其中的文本 但是每当我遇到从 Windows 中添加到末尾添加 Copy 的文件时 程序都不会读取它 我尝试在传递的名称中使用引号 但没有骰子 FOR R F in CDP do for f tokens a
  • 如何在Asp.Net中的Server.Transfer之前设置响应头?

    我有一个页面 根据某些条件 我要么执行 Response Redirect 要么执行 Server Transfer 现在我想为这两种情况添加标题 所以我正在做以下事情 Response AddHeader Vary User Agent
  • 在 Swift 中向 Firebase 数组添加项目,无需先观察数组

    目前 我通过首先观察数组 附加我的新帖子 然后更新引用来向我的 Firebase 数组添加一个新帖子 REF USER child UID observeSingleEventOfType Value withBlock snapshot
  • 带有文本文件的 Chrome 扩展 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我是 chrome 扩展的新手 我需要开发一个可以处理 text json 文件的 chrome 扩展 应该能够执行读写操作 文件将存储在同一台机器上 路径可能是 D abc x
  • jquery下拉菜单和ajax窗口之间的冲突

    我有一个 jquery 下拉菜单和一个模式窗口 它是 ajax 的触发器 当您单击 ajax 链接时会出现问题 当您关闭它时 下拉列表将不再起作用 因此 当您不单击 ajax 时 下拉菜单就会起作用 当您单击链接并将其关闭时 下拉菜单不显示
  • 为不同包中的对象创建通用转换器

    我有 5 个 Web 服务 A B C D 和 E 每个服务都有自动生成的对象 其结构完全相同 但名称不同且位于不同的包中 com ws a carA contains parameters and com ws a wheelA com
  • Android achartengine 简单饼图

    我正在跟进此链接中的示例和 创建了一个类如下 public class aChartExample public Intent execute Context context int colors new int Color RED Col
  • 在 Keras 中绘制模型

    我正在尝试在 Keras 中绘制我的模型 如下所示 Plot model graph tf keras utils plot model model to file Model1 png from IPython display impor
  • 如何连接 HIVE 中的两个表。

    我有两个表 A 和 B 它们都具有以下结构 Table A Name Age actualdate no Table B City sdate edate id 我希望使用 JOIN 获取 A 和 B 中的所有字段 其中 id no 且 s
  • 查找 int[] 数组中最受欢迎的元素

    int a new int 10 1 2 3 4 5 6 7 7 7 7 我怎样才能写一个方法并返回7 我想让它保持原生状态 而不需要列表 地图或其他助手的帮助 仅数组 试试这个答案 一 数据 int a 1 2 3 4 5 6 7 7 7
  • 静态方法无法访问实例字段?

    我读过很多关于静态字段的文章 静态方法无法访问实例字段 字段 因为实例字段仅存在于该类型的实例上 但我们可以在静态类中创建和访问实例字段 请找到下面的代码 class Program static void Main string args
  • 通过将集合划分为两个子集来查找可以由集合形成的最大总和

    说明 Given a set of numbers S Find maximum sum such that Sum A1 Sum A2 Where A1 S and A2 S and A1 A2 And Sum X is the sum