棘手的编程问题,我无法理解

Pho*_*hox 26 algorithm math numbers np-complete

首先,让我说,这不是功课(我是一个A-Level的学生,这是没有接近我们解决问题(这是难)),但更多的问题,我想苏斯出来的改善我的编程逻辑.

我想到了一个有一个随机整数数组的场景,比如说10个整数.用户将输入他想要计数的数字,算法将尝试计算出该总和所需的数字.例如,如果我想从这个整数数组中得到总和44:

myIntegers = array(1, 5, 9, 3, 7, 12, 36, 22, 19, 63);
Run Code Online (Sandbox Code Playgroud)

输出将是:

36 + 3 + 5 = 44
Run Code Online (Sandbox Code Playgroud)

或类似的规定.我希望我能说清楚.作为一个额外的好处,我想让算法选择尽可能少的数字来产生所需的总和,或者如果不能用所提供的数字进行求和则给出错误.

我想过使用递归和遍历数组,反复添加数字直到满足或超过总和.但是我无法理解的是,如果算法超过总和并且需要选择从阵列中选择的数字,该怎么办.

我不是在寻找完整的代码,也不是一个完整的算法,我只是希望你对我应该如何处理这个问题提出意见,也许还会分享一些提示或其他内容.我今晚可能会开始研究这个问题.:P

正如我所说,不是功课.只是我想要做一些更先进的事情.

感谢您提供的任何帮助.:)

Ott*_*ger 31

你正在看背包问题

背包问题或背包问题是组合优化问题:给定一组项目,每一个重量和价值,确定每个项目数的集合中,包括使总重量小于给定的极限,总价值尽可能大.它的名字源于受固定尺寸背包约束的人所面临的问题,并且必须用最有用的物品填充它.


编辑:您的特殊情况是子集总和问题

  • 当人们来到这里询问如何快速解决NP-Complete问题时,你不喜欢它吗? (15认同)

pab*_*han 10

子集和办?]