子集和问题【嵌套循环解法?】

Subset Sum Problem [Nested Loop Solution?]

我正在努力解决 Subset - Sum 问题。问题陈述是-

给定一组非负整数和一个值总和,确定给定集合中是否存在总和等于给定总和的子集。

示例: Input: set[] = {3, 34, 4, 12, 5, 2}, sum = 9 Output: True //There is a subset (4, 5) with sum 9.

我见过解决这个问题的不同方法。其中一种是使用递归,另一种是使用动态编程。

我的问题是,为什么我们不能使用嵌套循环来解决问题。 他们每个人都考虑一个元素,一个一个地检查它是否是完整的和?

抱歉,我是算法之类的新手。

实际上可以用(很多)嵌套循环来解决子集求和问题。那可能被称为 "non-recursive brute force naive approach" 或其他名称。
你可能永远不会看到它,因为它是一种非常、非常、...、非常笨拙的解决问题的方法。
实际上,您需要与输入集中的元素一样多的嵌套循环,这意味着为每种情况编写不同的程序(起始集中有 1 个元素,起始集中有 2 个元素,等等)。
或者最终,编写一个程序,将设置大小 N 作为输入,并编写一个具有 N 嵌套循环的程序。但无论如何,结果将尽可能达到 "good coding practices"。

递归方法正是这样做的(它严格等同于许多嵌套循环,每个递归调用都会让你进入一个 'new' 循环),但更加简单和优雅(尽管进行了完整的枚举一组的子集,这是非常非常昂贵的)。更简单的代码更容易检查、更容易编辑、更容易测试、更容易调试......(等等......好的做法通常是有原因的)。