Показать сообщение отдельно
Старый 27.02.2013, 16:21
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Алгоритм "в лоб" предельно прост. Пускаем бесконечный цикл, пока оставшаяся сумма не станет равной 0. Вычитаем из нее каждый шаг самый большой номинал. Если сумма получилась отрицательной, то берем следующий номинал поменьше. Как только стала положительной, сохраняем остаток в переменную, где у нас была первоначальная сумма и идем на новую итерацию.

Что-то типа того (не окончательный вариант без кэширования) выглядит так:
Код AS3:
while (sum > 0) {
    for (var i:uint = 0; i < nominalList.length; i++) {
        if ((sum - nominalList[i]) >= 0) {
            sum -= nominalList[i];
            resultList.push(nominalList[i]);
            break;
        }
    }
}
__________________
тут я