0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
|
||||||
1 | ||||||
Размен монет, общий случай11.06.2019, 09:35. Показов 10443. Ответов 11
Метки нет (Все метки)
Имеется задача, где задается сумма N, и ее нужно разменять монетами
В коде ниже у нас известны номиналы монет (2, 5, 10)
0
|
11.06.2019, 09:35 | |
Ответы с готовыми решениями:
11
Размен монет Рекурсивная функция размен монет(перевести с Pascal на С++) размен монет Размен монет |
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
11.06.2019, 10:46 | 2 | |||||
Можно рекусивно перебрать все варианты. Туповатый метод, но рабочий
1
|
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
|
||||||
11.06.2019, 11:22 [ТС] | 3 | |||||
oleg-m1973, спасибо большое, очень выручаете, но есть несколько вопросов:
1) inline здесь используется чисто для повышения производительности? 2) uintmax_t в данном случае нужен для слишком больших значений, которые long long уже не тянет? 3) не совсем понял:
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
11.06.2019, 11:26 | 4 |
Нет, просто так. Можно static
Нет. Просто беззнаковое целое (знаковые здесь не нужны) Если остаток суммы равен текущему номиналу, можно дольше не проверять - добавляем текущий в результат и выходим
1
|
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
|
|
11.06.2019, 11:50 [ТС] | 5 |
oleg-m1973, еще раз благодарю
Добавлено через 18 минут oleg-m1973, извините, не сразу заметил Здесь pop_back() используется для того, чтобы убрать те номиналы, которые мы уже не будем использовать?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
11.06.2019, 11:54 | 6 |
Это значит, что с последним номиналом размен не получится. Убираем его и пробуем со следующим. Например 11 = 5+5 ->5+3+3
0
|
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
|
|
11.06.2019, 12:05 [ТС] | 7 |
oleg-m1973, правильно ли я понимаю, что change здесь - вектор номиналов, который заполняется значениями, которое лежат в константном массиве?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
11.06.2019, 12:09 | 8 |
Правильно. Но необязадельно в константном, можешь сделать обычный массив, только лучше отсортировать его по убыванию, ну и вот здесь поправить if (idx >= std::size(_coins))
0
|
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
|
|
11.06.2019, 12:21 [ТС] | 9 |
oleg-m1973, а получается данная функция возвращает инфу о возможности обмена?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
11.06.2019, 12:23 | 10 |
0
|
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
|
||||||
11.06.2019, 13:12 | 11 | |||||
0
|
-11 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 11
|
|
10.12.2019, 08:35 | 12 |
oleg-m1973, можете помочь почти с подобной задачей
0
|
10.12.2019, 08:35 | |
10.12.2019, 08:35 | |
Помогаю со студенческими работами здесь
12
Размен монет Размен монет Размен суммы с наименьшим количеством монет CAPICOM или общий случай про third-part dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |