Rédiger l'algorithme glouton pour le problème du rendu de monnaie. On testera notre programme avec le système de monnaie suivant : euros = [1, 2, 5].
===
un algorithme glouton classique pour le problème du rendu de monnaie et l’adapter au système d’euros [1, 2, 5]. Je vais aussi expliquer la logique étape par étape.
1️⃣ Problème
Entrée :
-
Un montant
Nà rendre. -
Un ensemble de pièces disponibles
euros = [1, 2, 5].
Sortie :
-
Le nombre minimal de pièces utilisées pour rendre
N. -
La liste des pièces choisies.
Idée du glouton :
-
À chaque étape, choisir la plus grande pièce possible ≤ montant restant.
-
Répéter jusqu’à ce que le montant restant soit 0.
Le glouton fonctionne correctement ici car les pièces sont “canonique” :
[1, 2, 5]
2️⃣ Algorithme en pseudo-code
3️⃣ Exemple avec N = 11
4️⃣ Implémentation C#
5️⃣ Exemple de sortie
✅ Correct et optimal pour ce système [1, 2, 5].
==============================
Back Tracking:
using System;
using System.Collections.Generic;
class Program
{
static int best = int.MaxValue;
static List<int> bestResult = new List<int>();
static void Change(int[] coins, int amount, List<int> current)
{
if (amount == 0)
{
if (current.Count < best)
{
best = current.Count;
bestResult = new List<int>(current);
}
return;
}
if (amount < 0 || current.Count >= best)
return;
foreach (int coin in coins)
{
current.Add(coin);
Change(coins, amount - coin, current);
current.RemoveAt(current.Count - 1);
}
}
static void Main()
{
int[] coins = { 1, 3, 4 };
int amount = 6;
Change(coins, amount, new List<int>());
Console.WriteLine("Số đồng tối thiểu: " + best);
Console.WriteLine(string.Join(", ", bestResult));
}
}
Aucun commentaire:
Enregistrer un commentaire