Я решаю эту проблему - КОЛКОЙН - Сбор монет на спой.
ссылка- https://www.spoj.com/problems/COLCOIN/
, где для данного набора купюр и денег, которые вы хотите, банк дает вам монеты с наивысшими купюрами, пока он больше не может, а затем переходит к следующей наивысшей купюре. Например: если номиналом является [1,2,3,4,8], если вы запрашиваете 23 рупии, сначала вы получаете две монеты по 8 рупий и, поскольку больше не может дать 8 монет за рупию, переходите к следующему номиналу и дает вам 4 рупии и 3 рупии.
Задача состоит в том, чтобы найти максимальное количество различных конфессий, которое вы можете получить при вводе конфессий. деньги, которые вы запрашиваете в банке, являются переменной величиной, на самом деле они не должны появляться, если я прав.
это моя идея:
Попытайтесь подвести итог стоимости более низких конфессий и посмотреть, могут ли они в сумме составить более крупные деноминации, и если они будут, вы никогда не получите все меньшие номиналы.
Пример: допустим, есть 1, 2 и 5. 1 + 2 <5. Таким образом, вы можете получить все деноминации. для 8 = 5 + 2 + 1 </p>
другое: допустим, есть деноминации 3,4 и 5. Итак, 3 + 4> 5, поэтому мы никогда не сможем получить все деноминации. потому что деньги будут выдаваться номиналом 5, пока деньги, которые нужно отдать, не станут меньше 5. и, очевидно, вы не можете получить 3 + 4 = 7 рупий за что-то менее 5
Еще одна идея, которая явно неверна, - начать со 2-й наивысшей купюры и найти монеты, которые мы добавим к этому, и вернуть это решение + 1 (наивысшая номинал).
это неверно, потому что, например, [1,2,4,17,19], если мы считаем уже 19, пытаясь суммировать другие за 18, мы получаем 1 + 17, только 2 номинала, кроме, где как 26 дал бы 4 купюры 19 + 4 + 2 + 1