|
|
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
Требуется написать класс наследник DispenseAlgorithm, реализующий алгоритм расчета сдачи обеспечивающий равномерное расходование номиналов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В метод CalculateDispense реализуемого класса передается информация о доступных на данный момент наборах купур (CassetteData{] data) и сумма(int summ) которую нужно выдать в качестве сдачи. Метод должен вернуть объект Dictionary<int, int> где ключ - уникальный идентификатор набора купюр, а значение – колво купюр данного набора требуемое к выдачи. Желаемый результат: купюры выдаются таким образом, чтобы они заканчивались в как можно более равномерно на протежении нескольких сессий выдачи сдачи. Пример: Имеются наоборы: автор1 10 руб 100 купюр 2 50 руб 100 купюр 3 100 руб 100 купюр Нужно выдать 800 рублей. Идеальный результат: автор1 5 штук 2 5 штук 3 5 штук Т.е. 800 = 10 * 5 + 50 * 5 + 100 * 5 Маложелательный результат: автор1 0 купюр 2 0 купюр 3 8 купюр Т.е. 800 = 10 * 0 + 50 * 0 + 100 * 8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 01:37:33 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
определить наибольшее число купюр в любой кассете. затем циклом проходить все кассеты(от маленького к большому). и с каждой кассеты брать купюру случайным образом: if (rand()%max>Cass[i].Count)//берем купюру. //и проверяем, не превысит ли она нужную сумму. если по прошествии цикла нужная сумма не набрана, но хотя бы одна купюра взята - повторяем цикл. если же сумма не набрана и ни одна купюра не взята - выдать нужную сумму невозможно. это я сейчас за три минуты сочинил, ответственности не несу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 06:35:47 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
if (rand()%max < Cass[i].Count) ошибочка вышла :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 06:36:57 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
Джеки Мхртчанкупюры выдаются таким образом, чтобы они заканчивались в как можно более равномерно на протежении нескольких сессий выдачи сдачи. Очень неудачная формулировка. Какие есть априорные сведения о выдаваемых суммах? Вот, например, есть в кассе купюры 2х127 рублей и 150х1 рублю. Надо выдать 127 рублей. Если просто решать задачу минимакса (максимизировать минимальное количество купюр одного номинала), то надо выдать 127х1 рублю, оставив 2х127 и 23х1. Но если известно, что с такой суммой нам просто "повезло" и дальше будут разные кривые суммы типа 11, 17 и т.п., то разумнее отдать 1х127 и оставить себе рублёвые для "более равномерного" расхода "на протяжении нескольких сессий". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 08:03:15 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
junior idiotДжеки Мхртчанкупюры выдаются таким образом, чтобы они заканчивались в как можно более равномерно на протежении нескольких сессий выдачи сдачи. Очень неудачная формулировка. Какие есть априорные сведения о выдаваемых суммах? Вот, например, есть в кассе купюры 2х127 рублей и 150х1 рублю. Надо выдать 127 рублей. Если просто решать задачу минимакса (максимизировать минимальное количество купюр одного номинала), то надо выдать 127х1 рублю, оставив 2х127 и 23х1. Но если известно, что с такой суммой нам просто "повезло" и дальше будут разные кривые суммы типа 11, 17 и т.п., то разумнее отдать 1х127 и оставить себе рублёвые для "более равномерного" расхода "на протяжении нескольких сессий". Возможно, но условие именно такое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 18:08:23 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
Так как нужно выдать 127 рублей при имеющихся 2 купюрах по 127 публей и 150 купюр по 1 рублю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 18:13:11 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
если ставить целью максимально долгую возможность выдавать сдачу, то выдавать ее надо максимально крупными купюрами. потому что если закончатся мелкие - то не каждую сдачу выдашь, хотя сумма денег позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 23:15:50 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
alex_kесли ставить целью максимально долгую возможность выдавать сдачу, то выдавать ее надо максимально крупными купюрами. потому что если закончатся мелкие - то не каждую сдачу выдашь, хотя сумма денег позволяет. Нужно сделать по условию, это не обязательно должно быть рационально. Условие - рациональность не важна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 23:23:22 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
Совершенно стандартная задача о рюкзаке. Что там париться то? "Равномерное расходование номиналов" это либо студенческое задание, либо чушь. Даже если это студенческое задание, то присваиваешь каждому номиналу число вида "количество_купюр_в_номинале/общее_количество_купюр", используя эту вероятность выбираешь случайный номинал и дальше рюкзак в чистом виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 04:56:28 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
White OwlСовершенно стандартная задача о рюкзаке. Что там париться то? "Равномерное расходование номиналов" это либо студенческое задание, либо чушь. Даже если это студенческое задание, то присваиваешь каждому номиналу число вида "количество_купюр_в_номинале/общее_количество_купюр", используя эту вероятность выбираешь случайный номинал и дальше рюкзак в чистом виде. я об этом не слышал. расскажи подробнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 10:15:59 |
|
||
|
Алгоритм выдачи сдачи
|
|||
|---|---|---|---|
|
#18+
Джеки Мхртчаня об этом не слышал. расскажи подробнее http://en.wikipedia.org/wiki/Knapsack_problem White Owl поторопился. В задаче о рюкзаке: 1. Однозначно задаётся "ценность" каждого предмета. Оценка ценности купюр в твоей задаче и является основной сложностью, в явном виде она не задана. Считать её обратно пропорциональной количеству таких же банкнот или равной их количеству со знаком минус -- вот по меньшей мере два "естественных", но различных варианта, и оба могут быть оспорены. 2. Нет никаких вероятностей. Решение строго детерминировано и является неявным полным перебором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 10:20:19 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36804755&tid=1343502]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 480ms |

| 0 / 0 |
