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 i 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: