在c++或Python中,用最少暴力的方法来查看一组数字中的多少组数字与给定的数字相加

Least brute force way to see how many groups of numbers in a group of numbers add to a given number in C++ or Python

本文关键字:数字 一组 多少 Python c++ 方法      更新时间:2023-10-16

标题可能有点模棱两可。

有一个给定的数。

存在一组小于给定数且大于0的数。

我想知道有多少种不同的相加组合等于给定的数字。

例如,给定的数字是14,集合中的数字是7,7,7,6,4和4。一共有4种组合。(7+ 7,7 + 7,7 + 7,6 +4+4)

我真的不在乎解决方案是什么语言,但我更喜欢c++或Python。

不要因为声称这是np完全的而气馁。@isbadawi链接的关于子集和的维基百科文章提到了David Pisinger教授1999年的一篇论文,其中的一种算法听起来似乎可以在线性时间内与你现有的约束条件一起工作:http://www.sciencedirect.com/science/article/pii/S0196677499910349。31.5美元,但如果你真的需要解决这个问题,这听起来很便宜。