给定最多 10 个整数和一个总和的列表,将显示总和为该总和的数字的子集
编写一个程序,给定一个最多 10 个整数和一个和的列表,如果存在则显示总和为该和的数字的子集,否则指示不存在。例如,对于列表:5,13,24,9,3,3 和 sum = 28,您的程序应显示 13,9,3,3。
如何在 C++ 中使用递归函数执行此操作?
Write a program which, given a list of up to 10 integer numbers and a sum, will display a subset of the numbers whose total is that sum if one exists or indicate that none exists otherwise. For example, for the list: 5,13,24,9,3,3 and sum = 28, your program should display 13, 9, 3, 3.
How to do this in C++ using a recursive function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
递归函数实际上并不是最简单或最快的方法,但您可以编写一个函数来获取所需的总和和整数列表。
该函数一次遍历列表一个元素,对于每个元素,它从当前目标值中减去它,并使用新目标和删除当前减去的元素的新列表递归地调用自身。基本情况是一个空列表和一个值。如果该值为零,则返回 true,否则返回 false。每当函数返回 true 时,当前考虑的元素就是解决方案中的一个值,因此您可以输出它。
A recursive function isn't actually the simplest or fastest way to do this, but you can write a function that takes the desired sum and a list of integers.
The function goes through the list one element at a time, and for each element it subtracts it from the current goal value, and recursively calls itself with the new goal and a new list with the currently subtracted element removed. The base case is an empty list and a value. If that value is zero, return true, else return false. Whenever the function returns true, the currently considered element is a value in the solution, so you can output it.