java - 使用递归链接结构解决子集和问题

标签 java recursion linked-list subset-sum

想象一个具有整数节点(例如 5 -> 8 -> 10 -> 2 -> 7)和给定总和(例如 15)的无序单链接结构。我怎样才能找到第一个子集递归地等于总和?在此示例中,答案为 5 -> 8 -> 2(5 -> 10 或 8 -> 7 也可以是答案,但不是第一个)。我有一个方法“node f(node, sum)”:

if node == null
   return null
else if node.value <= target
   return new Node(node.item, f(node.next, sum - node.value)
else
   return f(node.next, sum)

但是,这将返回小于或等于总和的子集,而不是精确的总和。如何创建精确的算法?

最佳答案

Backtrack就是您正在寻找的。 :)

此外,您还没有定义子集的排序方式。依靠这种回溯并在找到解决方案后停止可能行不通,您将必须实现 BFS可能的解决方案。

关于java - 使用递归链接结构解决子集和问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60726729/

相关文章:

algorithm - 非递归alpha beta剪枝算法

java - Java可以删除电脑的所有文件和文件夹吗?

c - C中使用链表时的指针问题

c - C 结构体中的结构体意味着什么?

java - SSLHandShakeException 没有合适的协议(protocol)

java - 类似 JsPerf 的 Java 站点?

java - 如何在特定时间后将应用程序发送到后台

Java - 突破入侵方法并返回值

c - 双向链表正确打印所有内容但在打印功能结束时收到段错误

java - 什么是NullPointerException,我该如何解决?