PYI_R_W14_M37 Algorytmy zachłanne
Czym charakteryzują się algorytmy zachłanne.
Na czym polega zagadnienie algorytmiczne, jakim jest problem wydawania reszty.
Jak zastosować podejście zachłanne przy rozwiązaniu problemów.
Jakie są ograniczenia metody zachłannej oraz wyjaśnisz, dlaczego algorytmy zachłanne nie zawsze znajdują najlepsze rozwiązanie dla danego problemu.
Teraz czas sprawdzić swoją wiedzę i umiejętności w praktyce.
57 i nominałów 20, 9, 6, 3 i 2 algorytm zachłanny zadziała poprawnie? Możliwe odpowiedzi: 1. Tak, 2. Nie159.9, 4, 3 i 2. 46 Możliwe odpowiedzi: 1. 9 3, 2. 9 9 9 9 4 3, 3. 9 9 9 9, 4. 4 4 12 Możliwe odpowiedzi: 1. 9 3, 2. 9 9 9 9 4 3, 3. 9 9 9 9, 4. 4 4 43 Możliwe odpowiedzi: 1. 9 3, 2. 9 9 9 9 4 3, 3. 9 9 9 9, 4. 4 4 8 Możliwe odpowiedzi: 1. 9 3, 2. 9 9 9 9 4 3, 3. 9 9 9 9, 4. 4 4Zapisz za pomocą pseudokodu algorytm zachłannego wydawania reszty. W algorytmie wykorzystaj tablicę nominałów, ale uwzględnij to, że każdego nominału można użyć tylko raz.
Program powinien wyświetlić informację o wykorzystanych nominałach oraz komunikat, czy reszta została wydana poprawnie.
Przykładowe wyjście dla reszty 912 i nominałów 500, 200, 100, 50, 20, 10, 5, 2, 1:
Specyfikacja:
Dane:
resztaDoWydania– liczba naturalna; wartość reszty do wydanian– liczba naturalna; liczba dostępnych nominałównominały– tablica liczb naturalnych; tablica dostępnych nominałów posortowana malejąco
Wynik:
komunikat dotyczący wykorzystanych nominałów i tego, czy reszta została zwrócona poprawnie.
Zdefiniuj funkcję zachlanne_wydawanie_reszty(), która dla reszty reszta_do_wydania obliczy liczbę nominałów użytych do jej wydania. Dostępne nominały zapisane są w listach zlote_nominaly, grosze_nominaly. Nominały z listy grosze_nominaly mają posłużyć do wydania reszty po przecinku. Przetestuj swój program dla następujących danych wejściowych:
zlote_nominaly = [500, 200, 100, 50, 20, 10, 5, 2, 1]grosze_nominaly = [50, 20, 10, 5, 2, 1]reszta_do_wydania = 77.99
Specyfikacja:
Dane:
zlote_nominaly– lista liczb naturalnych zawierająca posortowany malejąco zbiór nominałów; nominały z tej listy powinny posłużyć do wydania całkowitej części resztyreszta_do_wydaniagrosze_nominaly– lista liczb naturalnych zawierająca posortowany malejąco zbiór nominałów; nominały z tej listy powinny posłużyć do wydania rzeczywistej części resztyreszta_do_wydaniareszta_do_wydania- liczba rzeczywista; kwota do wydania
Wynik:
minimalna liczba nominałów, jakich należy użyć do wydania reszty
Wynik dla podanych danych:
Zdefiniuj funkcję zachlanne_wydawanie_reszty(), która dla każdej z reszt w liście reszty_do_wydania obliczy, ile razy do jej wydania został użyty każdy z nominałów z listy nominaly. Przetestuj swój program dla następujących danych wejściowych:
nominaly = [ 50, 20, 10, 5, 2, 1 ]reszty_do_wydania = [ 234, 784, 129 ]
Specyfikacja:
Dane:
nominaly– lista liczb naturalnych; zawierająca posortowany malejąco zbiór nominałówreszty_do_wydania– lista liczb naturalnych; zawierająca reszty do wydania
Wynik:
liczba nominałów wykorzystanych do wydania reszty
Wynik dla podanych danych:
Zdefiniuj funkcję zachlanne_wydawanie_reszty(), która dla każdej z reszt w liście reszty_do_wydania sprawdzi, czy jest możliwe wydanie jej za pomocą nominałów z listy nominaly. Przetestuj swój program dla następujących danych wejściowych:
nominaly = [ 9, 8, 7, 6 ]reszty_do_wydania = [ 957, 9999, 2436, 5717, 13 ]
Specyfikacja:
Dane:
nominaly– lista liczb naturalnych zawierająca posortowany malejąco zbiór nominałówreszty_do_wydania- lista liczb naturalnych zawierająca reszty do wydania
Wynik:
komunikat informujący, czy dana reszta może bądź nie może zostać wydana podanymi nominałami
Wynik dla podanych danych: