Bonjour,
Je suis débutant en algorithme et je cherche à faire un pseudo Algorithme pour le coder par la suite.
Je dois réaliser un Algo permettant de rendre le plus de monnaie. La consigne est de le faire récursivement et on a un nombre limité de pièce.
J'ai réussi à faire l'inverse, c'est à dire à rendre le moins de monnaie. Pour faire, je suis partie de la plus grande valeur et j'ai ajouté mes pièces.
Par contre faire l'inverse je me heurte à plusieurs problèmes.
La gestion des sommes impaire. J'ai fait une fonction qui me retourne si la somme à rendre est pair ou impair. Dans ma fonction je récupère les entiers, décimal et je divise par deux les décimales. Apres je bloque, en fait je me retrouve avec mes chiffres pair ou impair ainsi que mes entiers et mes décimal. Le problème est qu'il faut créer la liste de pièce à rendre en fonction de la somme du.
Pour moi, il faut ensuite ajouter pièce par pièce pour créer la sommes du. Mais je pars dans tous les sens et je n'arrive pas à résoudre le problème, j'ai toujours une tache supplémentaire qui vient s'ajouter.
J'ai vu l'algo de glouton mais cela ne semble pas correspondre à mon besoin.
Je viens vers vous pour me remettre dans le droit chemin, je ne souhaite pas que l'on me donne la solution cela ne m’intéresse pas du tout.
Voici ce que je pense faire mais je vais me retrouver avec des sommes jamais rendu et des chiffres pair alors qu’il était impair etc :
Merci par avance de votre aide.
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 Tableau Piece[] = {1,2,5,10,20,50,1,2}; Tableau NbPiece[] = {5,2,0,10,3,5,9}; Tableau rendu[]={} Fonction renduMonnaie (rendre){ Pair_Impair(a rendre); parcourir Piece[i]{ si NbPiece[i] !=0 rendu -> ajouter Piece[i]; renduMonnaie(rendre - Piece[i]) sinon si rendre ==0 Afficher Tableau rendu FinSi } }
Partager