我遇到的情况是,我需要在列表中找到所有可能的数字组合,这些组合在添加时等于目标。例如,考虑一个列表 - (4,6,10,20,30,40)和目标= 20.所以可能的组合是(4,6,10)和(20)。
我考虑过的优化很少:
上述逻辑适用于较小的列表(大小不超过10)。但在最坏的情况下,该列表最多包含100个元素,然后我需要查看2 ^ 100种可能的组合(这也可能导致计数器的整数溢出,跟踪子集的数量),这将减慢程序的速度。计算子集将为O(2 ^ n)n =列表的大小,增长顺序为指数。
有没有更好的方法来解决更大的列表的这个问题?我正在寻找一种通用的方法来解决这个问题,而不使用任何语言特定的功能。任何帮助或建议表示赞赏。