\documentclass{bschlangaul-aufgabe}
\bLadePakete{java,mathe}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Wechselgeldalgorithmus},
  Thematik = {Wechselgeld},
  Referenz = AUD.Algorithmenmuster.Greedy-Algorithmen.Wechselgeld,
  RelativerPfad = Module/30_AUD/60_Algorithmenmuster/20_Greedy-Algorithmen/Aufgabe_Wechselgeld.tex,
  ZitatSchluessel = net:html:wikiversity:wechselgeld,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Greedy-Algorithmus},
}

Als Beispiel nehmen wir die Herausgabe von Wechselgeld auf Beträge unter
1€. Verfügbar sind die Münzen mit den Werten 50ct, 10ct, 5ct, 2ct, 1ct.
Unser Ziel ist, so wenig Münzen wie möglich in das Portemonnaie zu
bekommen.\index{Greedy-Algorithmus}
\footcite{net:html:wikiversity:wechselgeld}
%
Ein Beispiel: $78ct = 50 + 2 \cdot 10 + 5 + 2 + 1$
%
Es wird jeweils immer die größte Münze unter dem Zielwert genommen und
von diesem abgezogen. Das wird so lange durchgeführt, bis der Zielwert
Null ist.

%%
%
%%

\bPseudoUeberschrift{Formalisierung}

Gesucht ist ein Algorithmus der folgende Eigenschaften beschreibt.
Bei der \emph{Eingabe} muss gelten:

\bigskip

\begin{compactenum}
\item dass die eingegebene Zahl eine natürliche Zahl ist, also
$\text{betrag} > 0$

\item dass eine Menge von Münzwerten zur Verfügung steht $
\text{münzen}=\{c_1,...,c_n\}$ \zB $\{1,2,5,10,20,50\}$
\end{compactenum}

\bigskip

\noindent
Die \emph{Ausgabe} besteht dann aus ganzen Zahlen
$\text{wechselgeld}[1], \ldots ,\text{wechselgeld}[n]$.
Dabei ist $\text{wechselgeld}[i] $ die Anzahl der Münzen
des Münzwertes für $ c_i $ für $ i=1,\ldots,n $ und haben die
Eigenschaften:

\bigskip

\begin{compactenum}
\item $\text{wechselgeld}[1] \cdot c_1 + \ldots +
\text{wechselgeld}[n] \cdot c_n = \text{betrag}$

\item $\text{wechselgeld}[1] + \ldots + \text{wechselgeld}[n] $
ist minimal unter allen Lösungen für 1.
\end{compactenum}

%%
%
%%

\begin{bAntwort}
\bJavaDatei[firstline=3]{muster/Wechselgeld}
\end{bAntwort}
\end{document}
