<?php
//требуемая сумма
$amount = 6600;
//запас наличных
$nominals = array(100, 200, 500, 1000, 2000, 5000); 100 => 0,
200 => 3,
500 => 1,
1000 => 0,
2000 => 4,
5000 => 1
);
$tic = false;
$pew = 0;
$loooong = 9999;
$F = array_fill(0, $amount + 1, $loooong); // заполнение массива значением long, до 6600 $F[0] = 0;
for ($k = 1; $k < $amount + 1; $k++){
for ($i = 0; $i < count($nominals); $i++){ if ($k - $nominals[$i] >= 0 && $F[$k - $nominals[$i]] < $F[$k] && $check[$k - $nominals[$i]][$nominals[$i]] > 0){
$F[$k] = $F[$k - $nominals[$i]];
$check[$k] = $check[$k - $nominals[$i]]; //присвоение массиву в значении $k массива ($k - номинал банкноты)
$pew = $nominals[$i];
$tic = true;
}
}
if($tic == true){ //прибавление банкноты к истинному решению, вычитание банкноты из банкомата
$check[$k][$pew] -= 1;
$F[$k] += 1;
$tic = false;
}
}
if ($F[$amount] >= 9999){
echo 'выдать сумму невозможно';
}
else{
if ($F[$amount] == 0){
'выдано ноль банкнот';
}
else{
echo "Сумма к выдаче:{$amount}\n";
echo "выдано банкнот всего: {$F[$amount]}\n";
for($p = count($nominals) - 1; $p >= 0; $p--){ $bankn = $check[0][$nominals[$p]] - $check[$amount][$nominals[$p]];
echo "выдано {$bankn} банкнот номиналом {$nominals[$p]} рублей\n";
}
}
}
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7CgovL9GC0YDQtdCx0YPQtdC80LDRjyDRgdGD0LzQvNCwCiRhbW91bnQgPSA2NjAwOwoKLy/Qt9Cw0L/QsNGBINC90LDQu9C40YfQvdGL0YUgCiRub21pbmFscyA9IGFycmF5KDEwMCwgMjAwLCA1MDAsIDEwMDAsIDIwMDAsIDUwMDApOwokY2hlY2sgPSBhcnJheSgpOwokY2hlY2tbMF0gPSBhcnJheSgKICAgMTAwICAgICAgPT4gICAwLAogICAyMDAgICAgICA9PiAgIDMsCiAgIDUwMCAgICAgID0+ICAgMSwKICAgMTAwMCAgICAgPT4gICAwLAogICAyMDAwICAgICA9PiAgIDQsCiAgIDUwMDAgICAgID0+ICAgMQopOwoKJHRpYyA9IGZhbHNlOwokcGV3ID0gMDsKJGxvb29vbmcgPSA5OTk5OwokRiAgPSBhcnJheSgpOwokRiA9IGFycmF5X2ZpbGwoMCwgJGFtb3VudCArIDEsICRsb29vb25nKTsgLy8g0LfQsNC/0L7Qu9C90LXQvdC40LUg0LzQsNGB0YHQuNCy0LAg0LfQvdCw0YfQtdC90LjQtdC8IGxvbmcsINC00L4gNjYwMAokRlswXSA9IDA7CmZvciAoJGsgPSAxOyAkayA8ICRhbW91bnQgKyAxOyAkaysrKXsKCWZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRub21pbmFscyk7ICRpKyspewoJCWlmICgkayAtICRub21pbmFsc1skaV0gPj0gMCAmJiAkRlskayAtICRub21pbmFsc1skaV1dIDwgJEZbJGtdICYmICRjaGVja1skayAtICRub21pbmFsc1skaV1dWyRub21pbmFsc1skaV1dID4gMCl7CgkJCSRGWyRrXSA9ICRGWyRrIC0gJG5vbWluYWxzWyRpXV07CgkJCSRjaGVja1ska10gPSAkY2hlY2tbJGsgLSAkbm9taW5hbHNbJGldXTsgLy/Qv9GA0LjRgdCy0L7QtdC90LjQtSDQvNCw0YHRgdC40LLRgyDQsiDQt9C90LDRh9C10L3QuNC4ICRrINC80LDRgdGB0LjQstCwICgkayAtINC90L7QvNC40L3QsNC7INCx0LDQvdC60L3QvtGC0YspCgkJCSRwZXcgPSAkbm9taW5hbHNbJGldOwoJCQkkdGljID0gdHJ1ZTsKCQl9CgkJCgl9CglpZigkdGljID09IHRydWUpeyAgICAgICAvL9C/0YDQuNCx0LDQstC70LXQvdC40LUg0LHQsNC90LrQvdC+0YLRiyDQuiDQuNGB0YLQuNC90L3QvtC80YMg0YDQtdGI0LXQvdC40Y4sINCy0YvRh9C40YLQsNC90LjQtSDQsdCw0L3QutC90L7RgtGLINC40Lcg0LHQsNC90LrQvtC80LDRgtCwCgkkY2hlY2tbJGtdWyRwZXddIC09IDE7IAogICAgJEZbJGtdICs9IDE7CgkkdGljID0gZmFsc2U7Cgl9Cn0KCmlmICgkRlskYW1vdW50XSA+PSA5OTk5KXsKCWVjaG8gJ9Cy0YvQtNCw0YLRjCDRgdGD0LzQvNGDINC90LXQstC+0LfQvNC+0LbQvdC+JzsKfQplbHNlewoJaWYgKCRGWyRhbW91bnRdID09IDApewoJJ9Cy0YvQtNCw0L3QviDQvdC+0LvRjCDQsdCw0L3QutC90L7Rgic7CiAgICB9CiAgICBlbHNlewoJZWNobyAi0KHRg9C80LzQsCDQuiDQstGL0LTQsNGH0LU6eyRhbW91bnR9XG4iOwoJZWNobyAi0LLRi9C00LDQvdC+INCx0LDQvdC60L3QvtGCINCy0YHQtdCz0L46IHskRlskYW1vdW50XX1cbiI7CiAgICBmb3IoJHAgPSBjb3VudCgkbm9taW5hbHMpIC0gMTsgJHAgPj0gMDsgJHAtLSl7CgkJJGJhbmtuID0gJGNoZWNrWzBdWyRub21pbmFsc1skcF1dIC0gJGNoZWNrWyRhbW91bnRdWyRub21pbmFsc1skcF1dOwoJCWVjaG8gItCy0YvQtNCw0L3QviB7JGJhbmtufSDQsdCw0L3QutC90L7RgiDQvdC+0LzQuNC90LDQu9C+0LwgeyRub21pbmFsc1skcF19INGA0YPQsdC70LXQuVxuIjsKCSAgICB9IAogICAgfQp9