min_ermek.py
1    # Mohó algoritmus az érmék minimális számának megtalálásához
2    
3    def moho_cimletezes(osszeg):
4        cimletek=[1,2,5,10,20,50,100,500,1000]
5        cimlet_db={
6            1:0,2:0,5:0,10:0,
7            20:0,50:0,100:0,
8            500:0,1000:0
9        }
10       felhasznalt_cimletek = []
11       i=-1
12       while i>=-len(cimletek):            # negatív index: visszafelé haladunk
13           while osszeg>=cimletek[i]:      # keressük a lehető legnagyobb címletet
14               osszeg-=cimletek[i]         # csökkentjük vele az összeget
15               felhasznalt_cimletek.append(cimletek[i]) # elhelyezzük a listánkban
16               cimlet_db[cimletek[i]]+=1   # a felhasznált címlet darabszámát növeljük
17           i-=1    #index csökkentése (azaz balra lépés a címleteken)
18   
19       for i in range(len(felhasznalt_cimletek)):
20           print(felhasznalt_cimletek[i], end=' ')
21       print('\nDarabra:')
22       for c, db  in reversed(cimlet_db.items()): #.items(): dict key és value együtt
23           if db!=0:
24               print(c,':',db)
25       
26   
27   # >>>>>>>>>>>>>>>>>> F Ő M O D U L >>>>>>>>>>>>>>>>>>>
28   if __name__ == '__main__':
29       valtando=int(input('A cimletezendő összeg: '))
30       print('A megadott összeg minimális cimletezése:')
31       moho_cimletezes(valtando)
32