Page 10 - Informatyka na czasie. Podejście zachłanne w rozwiązywaniu problemów. Podręcznik klasa 3
P. 10

Rozdział 1. Algorytmika i programowanie w języku C++


                                  Definicja funkcji WydajReszte (linie 5–17) jest podobna do poprzed-
                                niej, jednak funkcja operuje już na liczbach całkowitych.
                                  Przy wypisywaniu wartości potrzebnych monet (linia 12) podajemy
             Warto wiedzieć
           Oprogramowanie       wynik w postaci liczb niecałkowitych (w złotówkach). Typ niecałkowi-
           stosowane w bankach   ty jest wymuszony przez zastosowanie dzielenia przez wartość 100.0,
           i innych instytucjach   a nie przez 100.
           finansowych również    Przykładowe wywołanie programu pokazuje rysunek 4.5.
           wykonuje obliczenia
           na liczbach całkowitych.










                                Rys. 4.5. Wywołanie programu wydawanie_reszty_2.exe dla kwoty 8 zł 30 gr

                                  Ćwiczenie 6
             Warto wiedzieć      a. Zapisz kod programu w pliku wydawanie_reszty_2.cpp. Skom-
           Dopiero w 2009 r. został   piluj kod i uruchom program dla kilku różnych kwot reszty, np.
           opublikowany artykuł
           naukowy wyjaśniający,    7 zł 30 gr, 7 zł 85 gr.
           jak sprawdzić, czy dla   b. Zmodyfikuj kod programu tak, aby można było do niego wprowa-
           danego zbioru nominałów   dzać kwotę reszty większą niż 10 zł, a resztę można było wydawać
           algorytm zachłanny
           na pewno znajdzie        z użyciem monet i banknotów.
           rozwiązanie optymalne
           niezależnie od wydawanej
           kwoty. Autorami artykułu   Optymalność zachłannego algorytmu wydawania reszty jest ściśle
           było dwoje Polaków:   związana ze zbiorem dostępnych nominałów. Można sobie wyobrazić
           Anna Adamaszek       fikcyjny system monetarny, np. o nominałach 25, 10, 1, dla którego algo-
           i Michał Adamaszek.
                                rytm zachłanny nie znajduje optymalnego rozwiązania. Na przykład dla
                                reszty 30 otrzymamy sumę 25 + 1 + 1 + 1 + 1 + 1 zamiast 10 + 10 + 10.
                                  Ten przykład wystarcza, aby stwierdzić, że w ogólnym przypadku
                                wydawanie reszty metodą zachłanną nie musi prowadzić do uzyskania
            Rozwiązanie optymalne,   rozwiązania optymalnego.
                        s. 63 


              A to ciekawe

           Systemy monetarne a wydawanie reszty


           Systemy monetarne wielu krajów są tak skonstruowane, aby
           metoda zachłanna działała w nich optymalnie, tzn. żeby można było
           wydać resztę najmniejszą liczbą banknotów i monet. Polski system
           monetarny jest zbudowany na bazie liczb: 5, 2, 1. Wartości
           banknotów i monet są wielokrotnościami tych liczb.


           70
   5   6   7   8   9   10   11   12   13   14   15