<?php
//Сколько выдать
$input = 700;
//Номиналы и количество имеющихся купюр
100 => 0,
200 => 1,
500 => 1,
1000 => 0,
2000 => 2,
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;
foreach ($bills as $bill => $count) {
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;
$canIssue[$sum][1][$bill] = $canIssue[$sum - $bill][1][$bill] - 1;
} else {
$canIssue[$sum][1][$bill] = $bills[$bill];
}
} else {
$canIssue[$sum][1][$bill] = $bills[$bill];
}
}
}
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/QodC60L7Qu9GM0LrQviDQstGL0LTQsNGC0YwKJGlucHV0ID0gNzAwOwovL9Cd0L7QvNC40L3QsNC70Ysg0Lgg0LrQvtC70LjRh9C10YHRgtCy0L4g0LjQvNC10Y7RidC40YXRgdGPINC60YPQv9GO0YAKJGJpbGxzID0gYXJyYXkoCiAgICAxMDAgPT4gMCwKICAgIDIwMCA9PiAxLAogICAgNTAwID0+IDEsCiAgICAxMDAwID0+IDAsCiAgICAyMDAwID0+IDIsCiAgICA1MDAwID0+IDEKKTsKLy/Qo9C/0L7RgNGP0LTQvtGH0LjRgtGMINCy0LDQu9GO0YLRiyDQv9C+INGD0LHRi9Cy0LDQvdC40Y4Ka3Jzb3J0KCRiaWxscyk7Ci8v0JrQvtC70LjRh9C10YHRgtCy0L4g0LLRi9C00LDQvdC90YvRhSDQutGD0L/RjtGACiRpc3N1ZWQgPSBhcnJheV9maWxsX2tleXMoYXJyYXlfZmxpcCgkYmlsbHMpLCAwKTsKLy/Qo9C00LDQu9GP0LXQvCDQuNC3INC80LDRgdGB0LjQstCwINC60YPQv9GO0YDRiyDQutC+0YLQvtGA0YvRhSDQvdC10YIg0LIg0L3QsNC70LjRh9C40LgKJHRvRGVsZXRlID0gYXJyYXlfa2V5cygkYmlsbHMsIDApOwpmb3JlYWNoICgkdG9EZWxldGUgYXMgJGJpbGwpIHsKICAgIHVuc2V0KCRiaWxsc1skYmlsbF0pOwp9CgokdG1wID0gJyc7CiRjYW5Jc3N1ZVswXVswXSA9IDA7CiRjYW5Jc3N1ZVswXVsxXSA9ICRiaWxsczsKZm9yICgkc3VtID0gMTsgJHN1bSA8PSAkaW5wdXQ7ICsrJHN1bSkgewogICAgJGNhbklzc3VlWyRzdW1dWzBdID0gSU5GOwogICAgZm9yZWFjaCAoJGJpbGxzIGFzICRiaWxsID0+ICRjb3VudCkgewogICAgICAgIGlmICgoJHN1bSA+PSAkYmlsbCkgJiYgKCRjYW5Jc3N1ZVskc3VtIC0gJGJpbGxdWzBdICsgMSA8ICRjYW5Jc3N1ZVskc3VtXVswXSkpIHsKICAgICAgICAgICAgaWYgKCRjYW5Jc3N1ZVskc3VtIC0gJGJpbGxdWzFdWyRiaWxsXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAkY2FuSXNzdWVbJHN1bV1bMF0gPSAkY2FuSXNzdWVbJHN1bSAtICRiaWxsXVswXSArIDE7CiAgICAgICAgICAgICAgICAkY2FuSXNzdWVbJHN1bV1bMV1bJGJpbGxdID0gJGNhbklzc3VlWyRzdW0gLSAkYmlsbF1bMV1bJGJpbGxdIC0gMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjYW5Jc3N1ZVskc3VtXVsxXVskYmlsbF0gPSAkYmlsbHNbJGJpbGxdOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNhbklzc3VlWyRzdW1dWzFdWyRiaWxsXSA9ICRiaWxsc1skYmlsbF07CiAgICAgICAgfQogICAgfQp9CgppZiAoJGNhbklzc3VlWyRpbnB1dF1bMF0gPT0gSU5GKSB7CiAgICBlY2hvICLQktGL0LTQsNGH0LAg0L3QtdCy0L7Qt9C80L7QttC90LAiOwp9IGVsc2UgewogICAgd2hpbGUgKCRpbnB1dCA+IDApIHsKICAgICAgICBmb3JlYWNoICgkYmlsbHMgYXMgJGJpbGwgPT4gJGNvdW50KSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkY2FuSXNzdWVbJGlucHV0IC0gJGJpbGxdWzBdKSkgewogICAgICAgICAgICAgICAgaWYgKCRjYW5Jc3N1ZVskaW5wdXQgLSAkYmlsbF1bMF0gPT0gJGNhbklzc3VlWyRpbnB1dF1bMF0gLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCAuPSAkYmlsbCAuICcgJzsKICAgICAgICAgICAgICAgICAgICAkaW5wdXQgLT0gJGJpbGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KcHJpbnRfcigkdG1wKTs=