Algorytm zachłanny służy do rozwiązywania problemów, w których jeśli będziemy brać najlepszą (jak szukamy największej to największą a jak najmniejszej to najmniejszą) to otrzymamy prawidłowy wynik. Poniżej omówię prosty przykładowy algorytm zachłanny.
Mamy obliczyć największą liczbę o długości dokładnie m i sumie cyfr dokładnie s. jeżeli
takiej liczby nie ma, to trzeba zwrócić -1. Liczba nie może mieć zer wiodących.
Kiedy liczba jest największa? Kiedy na początku ma największe możliwe cyfry. Algorytm dla
tego problemu przedstawia się zastępująco:
m razy dodajemy na koniec naszej liczby największą liczbę, jaką możemy jeszcze dołożyć.
Czyli tak naprawdę dodajemy 9 dopóki się mieści, potem tę liczbę co została do sumy i na
koniec dokładamy tyle zer ile trzeba, żeby liczba była długości m. Jeżeli już wykorzystamy
wszystkie miejsca na cyfry, a suma co nam pozostała do dostawienia jest większa od zera, to
znaczy że nie da się stworzyć liczby o długości m i sumie cyfr s. UWAGA na początku trzeba
jeszcze dołożyć warunek:
Jeśli m > 1 i s == 0, to zwróć -1
Czemu? Liczba nie może się składać tylko z kilku zer,
bo nie może mieć zer wiodących, a taką liczbę musiałby zwrócić nasz algorytm.
Zasymulujmy nasz algorytm dla przykładowych danych: m = 2 s = 15; wynik oznaczmy jako maxi
1. maxi = 9, s = 15 - 9 = 6
2. maxi = 96, s = 0
Tu kończymy nasz algorytm(powinniśmy dołożyć tylko 2 cyfry). Wynikiem będzie 96.