2010-04-20 18 views
0

Écrivez un programme qui, en donnant une liste de jusqu'à 10 nombres entiers et une somme, affichera un sous-ensemble des nombres dont le total est cette somme s'il en existe un ou indique qu'il n'en existe pas autrement. Par exemple, pour la liste: 5,13,24,9,3,3 et sum = 28, votre programme devrait afficher 13, 9, 3, 3.donné une liste de jusqu'à 10 nombres entiers et une somme, affichera un sous-ensemble des nombres dont le total est cette somme

Comment faire cela en C++ en utilisant une fonction récursive?

+0

Doit-il sortir tous les sous-ensembles possibles ou juste un? –

+2

Est-ce que ce sont les devoirs? En tout cas, une réponse ne va pas vous aider à devenir un meilleur programmeur. Montrez-nous ce que vous avez fait vous-même, puis nous pouvons essayer de vous aider. –

Répondre

1

Une fonction récursive n'est pas réellement la manière la plus simple ou la plus rapide de le faire, mais vous pouvez écrire une fonction qui prend la somme désirée et une liste d'entiers. La fonction parcourt la liste un élément à la fois et, pour chaque élément, elle la soustrait de la valeur d'objectif actuelle et s'appelle récursivement avec le nouvel objectif et une nouvelle liste avec l'élément actuellement soustrait supprimé. Le cas de base est une liste vide et une valeur. Si cette valeur est zéro, renvoyez true, sinon renvoyez false. Chaque fois que la fonction renvoie true, l'élément actuellement considéré est une valeur dans la solution, vous pouvez donc l'afficher.