Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77

Сколькома способами можно сложить 1 рубль из 1,2,5,10,25,50 копеек которые даные в неограниченом количестве?

26.08.2011, 20:17. Показов 4944. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сколькома способами можно сложить 1 рубль из 1,2,5,10,25,50 копеек которые даные в неограниченом количестве?помогите написать код програмы.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.08.2011, 20:17
Ответы с готовыми решениями:

Сколькими способами можно разменять 10 копеек монетами по 1, 2, 3 и 5 копеек?
Помогите решить задачу пожалуйста "сколькими способами можно разменять 10 копеек монетами по 1 2 3 и 5 копеек при условии что каждая из...

Подсчет количества способов, которыми можно разменять рубль медными монетами (достоинством 1, 2, 3, 5 копеек)
составить алгоритм подсчета количества способов, которыми можно разменять рубль медными монетами(достоинством в1,2,3,5 копеек)

Сколькими способами можно разменять рубль?
сколькими способами можно разменять рубль(100 копеек) на монеты достоинством в 10,15,20 и 50 копеек? (количество копеек не ограничено)

10
26.08.2011, 20:38
 Комментарий модератора 
называйте темы информативно.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.08.2011, 13:43
Тема очень информативна !

Задача решается полным перебором
Или можно немного сократить перебор
0
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
27.08.2011, 14:00  [ТС]
Немного втупил в теме)Должна была бить "Интересная задача"
Перебор я знаю:сначала может быть 1 2 5 10 25 50
1 2 5 10 25 50 1 2 5 10 25 50 1 2 5 10 25 50 1 2 5 10 25 50
ну и так далее но как етот перебор записать програмным кодом ето посложнее)помогите пожалуйста етот код сочинить)по етому дереву што я навел.

Добавлено через 6 минут
блин ненарисовало дерево как я сочинял ну моя идея такова: сначала может может быть один из видов монет предположим што ето монета номиналом 1 после могут идти 6 видов->1,2,5,10,25,50
у на уже есть 5 вариантов 1+1,1+2,1+5,1+10,1+25,1+50.
Потом из етих шести сочиняетса 36 вариантов типа 1+1+1,1+1+2,1+1+5,1+1+10,1+1+25,1+1+50,1 +2+1.....
и так далее помогите мне ето дерево записать в програмном коде пожалуйста.Некоторые вариации повторяютса но потом число которое получитса надо поделить на 6 и будет точная цифра.
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
27.08.2011, 16:30
Типичная задача на поиск в глубину. У меня программа сосчитала 1130 способов.
Разберёшься куда код вставить и как он работает?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#define Ruble 100
int Count;   //Количество способов
 
void Func(int Balance, int BiggestMoneta){
    if (BiggestMoneta >= 50) Proverka(Balance, 5);
    if (BiggestMoneta >= 25) Proverka(Balance, 3);
    if (BiggestMoneta >= 10) Proverka(Balance, 2);
    if (BiggestMoneta >= 5) Proverka(Balance, 5);
    if (BiggestMoneta >= 2) Proverka(Balance, 2);
    if (BiggestMoneta >= 1) Proverka(Balance, 1);
}
 
void Proverka(int Balance, int Moneta){
    Balance += Moneta;
    if (Balance == Ruble){
        Count++;
    }else if(Balance < Ruble){
        Func(Balance, Moneta);
    }
}
 
int SkolkoSposobov( void ){
    int Balance = 0;   //Текущий баланс при подсчёте
    int BiggestMoneta = 50;     //Наибольшая монета
    Func (Balance, BiggestMoneta);
    return Count;
}
 
 
System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    Count = 0;
    this->textBox1->Text = SkolkoSposobov().ToString();
}
Добавлено через 51 минуту
Функцию Func неправильно записал. После контрольной проверки забыл исправить)

C++
1
2
3
4
5
6
7
8
void Func(int Balance, int BiggestMoneta){
        if (BiggestMoneta >= 50) Proverka(Balance, 50);        //Здесь...
        if (BiggestMoneta >= 25) Proverka(Balance, 25);        //...здесь...
        if (BiggestMoneta >= 10) Proverka(Balance, 10);        //...и здесь
        if (BiggestMoneta >= 5) Proverka(Balance, 5);
        if (BiggestMoneta >= 2) Proverka(Balance, 2);
        if (BiggestMoneta >= 1) Proverka(Balance, 1);
}
1
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
27.08.2011, 17:56  [ТС]
Теперь понятней) ото откуда цыфри 3 и 5 два раза)функциями я делал ето но хочу попробивать класами описать древообразную структуру)
0
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
28.08.2011, 00:54  [ТС]
Кстати по вашему коду у меня получилось 3953 способа)
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
28.08.2011, 09:18
Да, да, всё верно, 3953. Просто я говорю, что забыл исправить.
Я проверял алгоритм на простом примере при условиях Ruble=10, возможные монеты: 5, 3 и 2. В операторе if() затем значения поменял обратно, а в функции Proverka(int Balance, int Moneta) на радостях забыл.
0
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
28.08.2011, 12:24  [ТС]
И все же я думаю ета цыфра слегка великовата.Ведь комбинации могут повторятса 50+25+25,25+50+25,25+25+50-ето не 3 разних а 1 способ.

Добавлено через 16 минут
Можно задать суму как динамический массив m[i]типа char m[]="1+2+5+...+25"и подщитать количество плюсов в каждой строке.на Count++ надо поставить еще одно условие:количество плюсов не совпадает с другими вариантами.
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
28.08.2011, 19:13
KING1994, вот почему вы меня не спросили, что такое за серия условий
C++
1
2
3
4
5
6
if(BiggestMoneta >= 50)
if (BiggestMoneta >= 25)
if (BiggestMoneta >= 10)
if (BiggestMoneta >= 5)
if (BiggestMoneta >= 2)
if (BiggestMoneta >= 1)
?
Именно эти условия исключают повторения типа 50+25+25, 25+50+25 и 25+25+50. Если бы этих условий не было, то все три сочетания были бы сосчитаны. НО! Давайте брать только те из сочетаний, которые отсортированы по определённому условию, например по достоинству монеты. В этом случае будет сосчитано только одно из сочетаний. То есть, 50+25+25.
Алгоритм запрещает брать в каждом случае ту монету, номинал которой больше предыдущей взятой монеты. Например:
5 + 10 + 50 + 25 + 2 + 2 + 1 + 5 = 100
Алгоритм отберёт только
50 + 25 + 10 + 5 + 5 + 2 + 2 + 1 = 100
Потому что
50 ≥ 25 ≥ 10 ≥ 5 ≥ 5 ≥ 2 ≥ 2 ≥ 1
Понятно?

Цитата Сообщение от KING1994 Посмотреть сообщение
И все же я думаю ета цыфра слегка великовата.
Так есть же монета с номиналом 1 копейка. В любом случае она очень широко используется:
50 + 50*(1 копейка) = 100
10 + 5 + 2 + 83*(1 копейка) = 100
25 + 25 + 10 + 10 + 5 + 2 + 33*(1 копейка) = 100
... и так далее, короче ЦЕЛАЯ КУЧА случаев!

Цитата Сообщение от KING1994 Посмотреть сообщение
Можно задать суму как динамический массив m[i]типа char m[]="1+2+5+...+25"и подщитать количество плюсов в каждой строке.
Это зачем? Хотя можешь делать как хочешь!

А вы сами не знаете правильный ответ? Спросите у кого-нибудь.
1
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
28.08.2011, 20:11  [ТС]
Да я етого незаметил.Ваша программа работает правильно.Убедился в етом используя 2 монеты 25 и 50.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.08.2011, 20:11
Помогаю со студенческими работами здесь

Сколькими способами можно разменять рубль?
сколькими способами можно разменять рубль на монеты достоинством в 10, 15, 20 и 50 копеек? подскажите формулу!

Как наименьшим количеством монет можно выплатить N копеек?Предполагается,что в достаточном количестве имеются монеты достоинством 1,2.3.5.10,15,20,50
Дано натуральное число N.Как наименьшим количеством монет можно выплатить N копеек?Предполагается,что в достаточном количестве имеются...

Сколькими способами можно выдать один рубль, имея монеты разных номиналов
У Вас есть монеты номиналом 1, 2, 5, 10, 25 та 50 копеек в бесконечном количестве. Сколькими способами можно выдать один рубль?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru