Module: Açgözlü Algoritmalar


Problem

1 /9


Formaggio panzerotti'yi satın alıyor

Theory Click to read/hide

Açgözlü algoritma, nihai çözümün küresel anlamda optimal olacağı beklentisiyle her adımda optimal (mevcut adım içinde) değişkeni seçen bir algoritmadır.

Küçük örnek:
Farklı mezheplerden sınırsız sayıda madeni paramız olduğunu ve S miktarını toplamamız gerektiğini varsayalım. Her birini açgözlü bir algoritma ile çözmeye çalışacağımız iki özel durumu ele alalım.
Yani, şu şekilde hareket edeceğiz: her adımda, kalan miktarı aşmayan en yüksek değerde (adımdaki en iyi seçenek) bir madeni para alacağız.

a) Madeni paraların kupürleri 1, 5 ve 10 ve S = 27 olsun.
1) 10, S: 27 alın -> 17
2) 10, S: 17'yi al -> 7
3) 5'i al, S: 7 -> 2
4) 1, S: 2'yi al -> 1
5) 1 al, S: 1 -> 0
Sonuç olarak, beş jeton miktarını attılar. Bağımsız olarak (örneğin, kaba kuvvet) 4 jeton veya daha azı için 27 puan alamayacağınızdan emin olabilirsiniz.

b) Madeni paraların kupürleri 1, 5 ve 7 ve S = 24 olsun.
1) 7'yi al, S: 24 -> 17
2) 7, S: 17'yi al -> 10
3) 7'yi al, S: 10 -> 3
4) 1, S: 3 al -> 2
5) 1, S: 2 al -> 1
6) 1 al, S: 1 -> 0.
Altı madeni parayla puan aldık, ancak dört madeni parayla S puanı alabildik - ikisinin nominal değeri 7 ve ikisinin nominal değeri 5.

Örnekten de görülebileceği gibi, açgözlü bir algoritma ile problem çözmek her zaman mümkün değildir. Ancak genel olarak optimal bir cevaba götürürse, genellikle dinamik programlama veya diğer yöntemleri kullanmaktan daha kolay olacaktır.

Problem

Formaggio, çeşitli dolgulara sahip panzerotti'ye çok düşkündür ve hangisiyle olduğu o kadar önemli değildir. Bir keresinde acıkmış olan Formaggio bir fırına girdi ve domatesli, ıspanaklı ve mantarlı panzerotti'nin indirimde olduğunu gördü.
Formaggio olabildiğince çok panzerotti almak ister ama sorun şu ki satıştaki panzerotti sayısı sınırlıdır, tıpkı Formaggio'nun parası gibi.

Formaggio'nun satın alabileceği maksimum panzerotti sayısını belirlemesine yardım edin.

Giriş:
İlk satır P1, P2 ve P3 sayılarını içerir –; sırasıyla domatesli, ıspanaklı ve mantarlı panzerotti maliyeti.
İkinci satır, N1, N2 ve N3 değerlerini tanımlar. eşleşen panzerotti sayısı satışta. 
Üçüncü satır R sayısını içerir – Formaggio'nun sahip olduğu para miktarı. 
Girişteki tüm sayılar, 10000'i aşmayan pozitif tam sayılardır.

Çıktı:
Tek bir tamsayı yazdırın - Formaggio'nun satın alabileceği maksimum panzerotti sayısı.

Örnek:
 
Giriş Çıktı
5 3 8
2 6 4
23
7