#include #include #define oo 10000 /* Die Wertetabelle: f[i] = k bedeutet, dass das Gewicht i zum * ersten Mal erreicht werden konnte, wenn alles bis zum Barren * Nummer k gewaehlt werden darf. */ int f[10000]; /* Die Gewichte der Goldbarren. Statische arraygroessen wie immer * ca. 10%-100% ueberdimensioniert. Darauf kommt es bei statisch * deklarierten Arrays auch nicht mehr an. */ int barren[200]; int main () { int gewicht, count; int ok; int i,j; /* Aeussere Whileschleife: Jeder durchlauf bearbeitet einen * weiteren Testfall. Damit kann die gesamte Datei mit den * Beispieldaten auf einmal bearbeitet werden. */ while (1) { /* Zahl der Goldbarren einlesen und abbrechen, wenn * das Dateiende erreicht ist. */ if (1 != scanf ("%d", &count)) break; assert ((0 loesen. Das Gewicht des k-ten Barrens * ist aber barren[k-1]. */ while (gewicht > 0) { int k = f[gewicht]; assert (k <= count); printf (" %d", k); gewicht -= barren[k-1]; } printf ("\n"); } return 0; }