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