Bonjour,
Je cherche un algo qui va m'aider à trouver toutes les sommes possible pour un nombre.
Par exemple:
1+1+1+1=4
1+1+2=4
1+3=4
2+2=4
...
Merci d'avance.
Bonjour,
Je cherche un algo qui va m'aider à trouver toutes les sommes possible pour un nombre.
Par exemple:
1+1+1+1=4
1+1+2=4
1+3=4
2+2=4
...
Merci d'avance.
Je ne vois pas bien l'utilité, mais bon, un principe (naïf, car trouvé en 30 secondes) :
- Tu décomposes en somme de 1
- Chaque 1 constitue la feuille extrème d'un arbre
- tu additionnes chaque feuille avec l'une des autres, tu as un premier niveau avec des sommes de 2
- tu recommences en prenant ce second niveau avec le précédent et lui-même, tu as les sommes des 1 et des 2
- etc. => algo récursif
Extrèmement coûteux en terme de calculs, mais dans le principe, ça doit à peu près faire ce que tu veux.
Aucune réponse à une question technique par MP.
Ce qui vous pose problème peut poser problème à un(e) autre
http://thebrutace.labrute.fr
Ca dépend: est-ce que l'ordre des termes a une importance ? Est-ce que "3 + 1" et "1 + 3" constituent deux réponses ou une seule ?
L'algo de progfou va donner les deux réponses distinctes
Ah ben oui, j'ai dit "naïf" .
Mais à priori ça fonctionne.
Aucune réponse à une question technique par MP.
Ce qui vous pose problème peut poser problème à un(e) autre
http://thebrutace.labrute.fr
On peut peut-être le faire en récursif quitte à péter la pile rapidement
exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 trouver toutes les sommes formant n c'est trouver toutes les sommes formant n-1 ajouter 1 à toutes les combinaisons obtenues faire le tri pour éliminer les doublons
Le nettoyage des doublons peut-être plus puissant si on décide que l'ordre n'a pas d'importance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 trouver toutes les sommes formant 4 trouver toutes les sommes formant 3 trouver toutes les sommes formant 2 trouver toutes les sommes formant 1 renvoie ((1)) ((1)) recu on ajoute 1 de toutes les façons différentes (1+1) et (1,1) donc ((2), (1 ,1)) pas de doublon renvoie ((2), (1,1)) ((2),(1,1)) recu on ajoute 1 de toutes les façons différentes ((3) ,(2,1), (1,2) ,(1,1,1), (1,1,1) (on ajoute 1 entre les 1 et 1 en fin de liste) on vire le doublon renvoie ((3),(2,1),(1,2),(1,1,1)) ((3),(2,1),(1,2),(1,1,1)) reçu on ajoute 1 de toutes les façons différentes (4) (3,1) (2,2), (2,1,1), (2,1,1), (2,2), (1,3),(1,1,2) (1,2,1) ,(2,1,1), (1,2,1), (1,1,2), (1,1,1,1), (1,1,1,1),(1,1,1,1), on vire les doublons ((4),(3,1),(2,2),(2,1,1),(1,3),(1,2,1),(1,1,2),(1,1,1,1)) renvoie ((4),(3,1),(2,2),(2,1,1),(1,3),(1,2,1),(1,1,2),(1,1,1,1))
J'ai laissé les nombres seuls, ça ne ma paraît pas illogique.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager