Ich versuche einen rekursiven Aufruf für Münzwechsel in C++ zu erstellen. Ich habe den Großteil des Algorithmus im Internet ausprobiert, aber es scheint nicht mit Vektor zu gelten oder die Summen der verwendeten Münze nicht aus. Kann mir jemand helfen zu verstehen, was die rekursive Funktion aufrufen muss? Daher gibt mir mein Algorithmus nicht die Mindestanzahl an Münzen und ich weiß nicht, wie ich die verwendete Münze speichern soll.Wie kann ich einen rekursiven Münzwechsel in C++ programmieren?
int coin(vector<int> denom, int s,int N)
{
if(N == 0)
{
return 1;
}
if(N < 0 || (N > 0 && s < 0))
{
return 0;
}
return min(coin(denom,s - 1, N), 1 + coin(denom, s,N-denom[s-1]));
}
Input a value N:
Input: 40
Input how many denominations:
Input: 3
Denominations #1:
Input: 5
Denominations #2:
Input: 20
Denominations #3:
Input: 30
Output:
Minimum # of coins: 2
Coin used: 20 + 20
Don't want: 30 + 5 + 5
Was ist 's' und' N' in diesem Zusammenhang? Können Sie das Problem bitte etwas klar definieren, was Sie erreichen möchten? –
s ist die Größe und N ist die Nummer.Ich möchte, dass die Funktion mir die Mindestanzahl an Münzen gibt und auch das Ergebnis der verwendeten Münzen erzeugt. – Darkflame
Ich sehe hier keine Arrays. – xaxxon