<?php
//Сколько выдать
$input = 6600;
//Номиналы и количество имеющихся купюр
100 => 0,
200 => 3,
500 => 1,
1000 => 0,
2000 => 4,
5000 => 1
);
//Упорядочить валюты по убыванию
//Количество выданных купюр
$remained = $input;
//Удаляем из массива купюры которых нет в наличии
foreach ($toDelete as $bill) {
}
$tmp = '';
$f[0] = 0;
for ($m = 1; $m <= $input; ++$m) {
$f[$m] = INF;
$billsTmp = $bills;
foreach ($billsTmp as $bill => $count) {
if ($count == 0) {
continue;
}
if (($m >= $bill) && ($f[$m - $bill] + 1 < $f[$m])) {
$f[$m] = $f[$m - $bill] + 1;
$billsTmp[$bill] = $count - 1;
}
}
}
if ($f[$input] == INF) {
echo "Выдача невозможна";
} else {
while ($input > 0) {
foreach ($bills as $bill => $count) {
if (isset($f[$input -$bill])) { if ($f[$input - $bill] == $f[$input] - 1) {
$tmp .= $bill . ' ';
$input -= $bill;
break;
}
}
}
}
}
//print_r($f);
PD9waHAKLy/QodC60L7Qu9GM0LrQviDQstGL0LTQsNGC0YwKJGlucHV0ID0gNjYwMDsKLy/QndC+0LzQuNC90LDQu9GLINC4INC60L7Qu9C40YfQtdGB0YLQstC+INC40LzQtdGO0YnQuNGF0YHRjyDQutGD0L/RjtGACiRiaWxscyA9IGFycmF5KAogICAgMTAwID0+IDAsCiAgICAyMDAgPT4gMywKICAgIDUwMCA9PiAxLAogICAgMTAwMCA9PiAwLAogICAgMjAwMCA9PiA0LAogICAgNTAwMCA9PiAxCik7Ci8v0KPQv9C+0YDRj9C00L7Rh9C40YLRjCDQstCw0LvRjtGC0Ysg0L/QviDRg9Cx0YvQstCw0L3QuNGOCmtyc29ydCgkYmlsbHMpOwovL9Ca0L7Qu9C40YfQtdGB0YLQstC+INCy0YvQtNCw0L3QvdGL0YUg0LrRg9C/0Y7RgAokaXNzdWVkID0gYXJyYXlfZmlsbF9rZXlzKGFycmF5X2ZsaXAoJGJpbGxzKSwgMCk7CiRyZW1haW5lZCA9ICRpbnB1dDsKLy/Qo9C00LDQu9GP0LXQvCDQuNC3INC80LDRgdGB0LjQstCwINC60YPQv9GO0YDRiyDQutC+0YLQvtGA0YvRhSDQvdC10YIg0LIg0L3QsNC70LjRh9C40LgKJHRvRGVsZXRlID0gYXJyYXlfa2V5cygkYmlsbHMsIDApOwpmb3JlYWNoICgkdG9EZWxldGUgYXMgJGJpbGwpIHsKICAgIHVuc2V0KCRiaWxsc1skYmlsbF0pOwp9CgokdG1wID0gJyc7CiRmWzBdID0gMDsKZm9yICgkbSA9IDE7ICRtIDw9ICRpbnB1dDsgKyskbSkgewogICAgJGZbJG1dID0gSU5GOwogICAgJGJpbGxzVG1wID0gJGJpbGxzOwogICAgZm9yZWFjaCAoJGJpbGxzVG1wIGFzICRiaWxsID0+ICRjb3VudCkgewogICAgICAgIGlmICgkY291bnQgPT0gMCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCgkbSA+PSAkYmlsbCkgJiYgKCRmWyRtIC0gJGJpbGxdICsgMSA8ICRmWyRtXSkpIHsKICAgICAgICAgICAgJGZbJG1dID0gJGZbJG0gLSAkYmlsbF0gKyAxOwogICAgICAgICAgICAkYmlsbHNUbXBbJGJpbGxdID0gJGNvdW50IC0gMTsKICAgICAgICB9CiAgICB9Cn0KCmlmICgkZlskaW5wdXRdID09IElORikgewogICAgZWNobyAi0JLRi9C00LDRh9CwINC90LXQstC+0LfQvNC+0LbQvdCwIjsKfSBlbHNlIHsKICAgIHdoaWxlICgkaW5wdXQgPiAwKSB7CiAgICAgICAgZm9yZWFjaCAoJGJpbGxzIGFzICRiaWxsID0+ICRjb3VudCkgewogICAgICAgICAgICBpZiAoaXNzZXQoJGZbJGlucHV0IC0kYmlsbF0pKSB7CiAgICAgICAgICAgICAgICBpZiAoJGZbJGlucHV0IC0gJGJpbGxdID09ICRmWyRpbnB1dF0gLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCAuPSAkYmlsbCAuICcgJzsKICAgICAgICAgICAgICAgICAgICAkaW5wdXQgLT0gJGJpbGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KcHJpbnRfcigkdG1wKTsKLy9wcmludF9yKCRmKTs=