R1SC7OR99FVEG
Zdjęcie przedstawia kolorowe kulki o różnych wielkościach na barwnym tle.

PYI_R_W14_M37 Algorytmy zachłanne

Źródło: Scott Webb, domena publiczna.
Już wiesz
  • 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.

Ćwiczenie 1
RO88C3ROA171C
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Ćwiczenie 2
R1S1QC3MCEDLS
Czy dla reszty równej 57 i nominałów 20, 9, 6, 32 algorytm zachłanny zadziała poprawnie? Możliwe odpowiedzi: 1. Tak, 2. Nie
Ćwiczenie 3
R11NQKQ83K2V8
Wyznacz ciąg nominałów, które może wybrać zachłanny algorytm wydawania reszty. Możliwe odpowiedzi: 1. 9 9 9 7 1, 2. 12 7 6 3, 3. 7 7 7 2 2 2 1, 4. 8 8 4 3
Ćwiczenie 4
R9SGZHQF3CCFC
Jakie monety może wybrać aslgorytm zachłanny, jeśli reszta do wydania równa jest 36? Możliwe odpowiedzi: 1. 9 9 9 9, 2. 10 8 6 6 6, 3. 9 9 8 6 4, 4. 11 11 11 1 1 1
Ćwiczenie 5
R1NMLS52G4XOT
Jakiej reszty nie wyda algorytm zachłanny jeśli dostępne nominały to 8, 7, 5, 4 i 3? Możliwe odpowiedzi: 1. 94, 2. 122, 3. 65, 4. 112
Ćwiczenie 6
RJ54CM7V8S7NJ
Wstaw w tekst w odpowiedniej kolejnośći nominały, które zostaną użyte przez zachłanny algorytm wydawania reszty równej 159.
Ćwiczenie 7
RTRCN9CXPDR23
Połącz w pary wartość reszty z monetami, które może użyć algorytm zachłanny do ich wydania? Mam nieograniczony dostęp do monet 9, 4, 32. 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 4
Ćwiczenie 8

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

Linia 1. Wykorzystano nominał dwukropek 500. Linia 2. Wykorzystano nominał dwukropek 200. Linia 3. Wykorzystano nominał dwukropek 100. Linia 4. Wykorzystano nominał dwukropek 50. Linia 5. Wykorzystano nominał dwukropek 20. Linia 6. Wykorzystano nominał dwukropek 10. Linia 7. Wykorzystano nominał dwukropek 5. Linia 8. Wykorzystano nominał dwukropek 2. Linia 9. Wykorzystano nominał dwukropek 1. Linia 10. Reszta nie została zwrócona poprawnie.

Specyfikacja:

Dane:

  • resztaDoWydania – liczba naturalna; wartość reszty do wydania

  • n – liczba naturalna; liczba dostępnych nominałów

  • nominał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.

R11DK9RVFMN9K
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
R1J9qFziz59bs
Ćwiczenie 9
Jakimi monetami algorytm zachłanny wyda resztę równą 43? Mamy do wyboru nominały 9, 7, 4, 2, 1. Możliwe odpowiedzi: 1. 9 9 9 9 7, 2. 9 9 9 7 7 2, 3. 9 9 7 7 7 7 2, 4. 9 9 9 9 1 1 1 1 1 1 1
RqwFATCrxVnwO
Ćwiczenie 10
Połącz w pary ciąg monet składających się na resztę, wybrachyn przez algorytm zachłanny, ze zbiorem użytych nominałów. 9 9 9 9 9 7 1 Możliwe odpowiedzi: 1. 9, 4, 3, 1, 2. 9, 5, 4, 1, 3. 9, 3, 1, 4. 9, 7, 5, 4, 1 9 9 9 9 9 5 1 1 1 Możliwe odpowiedzi: 1. 9, 4, 3, 1, 2. 9, 5, 4, 1, 3. 9, 3, 1, 4. 9, 7, 5, 4, 1 9 9 9 9 9 4 4 Możliwe odpowiedzi: 1. 9, 4, 3, 1, 2. 9, 5, 4, 1, 3. 9, 3, 1, 4. 9, 7, 5, 4, 1 9 9 9 9 9 3 3 1 1 Możliwe odpowiedzi: 1. 9, 4, 3, 1, 2. 9, 5, 4, 1, 3. 9, 3, 1, 4. 9, 7, 5, 4, 1
R1U1UeCUmaCus
Ćwiczenie 11
Wstaw nominały w kolejności, według której zostaną wybrane przez algorytm zachłannego wydawania reszty. Dostępne nominały to 14, 13, 7, 5 oraz 1.
1
Ćwiczenie 12

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 reszty reszta_do_wydania

  • grosze_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 reszty reszta_do_wydania

  • reszta_do_wydania - liczba rzeczywista; kwota do wydania

Wynik:

  • minimalna liczba nominałów, jakich należy użyć do wydania reszty

Wynik dla podanych danych:

Linia 1. Liczba nominałów użytych do wydania reszty 77 kropka 99 dwukropek 10.
R4gubN5bn1mmU
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
1
Ćwiczenie 13

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łów

  • reszty_do_wydania – lista liczb naturalnych; zawierająca reszty do wydania

Wynik:

  • liczba nominałów wykorzystanych do wydania reszty

Wynik dla podanych danych:

Linia 1. Reszta do wydania dwukropek 234 kropka Liczba użytych w sumie banknotów i monet dwukropek 8. Linia 2. Nominal 50 dwukropek 4. Linia 3. Nominal 20 dwukropek 1. Linia 4. Nominal 10 dwukropek 1. Linia 5. Nominal 5 dwukropek 0. Linia 6. Nominal 2 dwukropek 2. Linia 7. Nominal 1 dwukropek 0. Linia 8. Reszta do wydania dwukropek 784 kropka Liczba użytych w sumie banknotów i monet dwukropek 19. Linia 9. Nominal 50 dwukropek 15. Linia 10. Nominal 20 dwukropek 1. Linia 11. Nominal 10 dwukropek 1. Linia 12. Nominal 5 dwukropek 0. Linia 13. Nominal 2 dwukropek 2. Linia 14. Nominal 1 dwukropek 0. Linia 15. Reszta do wydania dwukropek 129 kropka Liczba użytych w sumie banknotów i monet dwukropek 6. Linia 16. Nominal 50 dwukropek 2. Linia 17. Nominal 20 dwukropek 1. Linia 18. Nominal 10 dwukropek 0. Linia 19. Nominal 5 dwukropek 1. Linia 20. Nominal 2 dwukropek 2. Linia 21. Nominal 1 dwukropek 0.
R7tN2gsUNlfFi
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1
Ćwiczenie 14

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łów

  • reszty_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:

Linia 1. Reszta 957 nie moze zostac wydana nominalami 9 8 7 6. Linia 2. Reszta 9999 moze zostac wydana nominalami 9 8 7 6. Linia 3. Reszta 2436 moze zostac wydana nominalami 9 8 7 6. Linia 4. Reszta 5717 nie moze zostac wydana nominalami 9 8 7 6. Linia 5. Reszta 13 nie moze zostac wydana nominalami 9 8 7 6.
Rraid8WFTmuQy
Wymyśl pytanie na kartkówkę związane z tematem materiału.