Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 4

Найти минимальное кол-во монет образующие число S

11.12.2012, 17:28. Показов 1158. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такова, что по заданному кол-ву монет с номиналами w[i], составить сумму дающую число о(сокращение от слова остаток), при этом сумма должна состоять из минимального количества монет. Считается что монет с наминалом w[i] неограниченное число.
Мое решение описывает полный перебор: берем макс номинал w[i] меньший о, o=w[i]/o, берем новый элемент меньший o,.. И так для каждого элемента перебираются все суммы. qs сортирует массив по возрастанию.
Проблема в том, что на сайте acmp (http://acmp.ru/index.asp?main=task&id_task=407) не проходит 11 тест, т.е. подразумевается, что в функции hf() у меня ошибка.
данные поступают так:
3 //кол-во монет
1 9 21 //номиналы
50 // остаток о
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "stdafx.h"
#include <stdio.h>
#include <fstream>
 
using namespace std;
long n, w[11], ras=3000000; //кол-во монет,массив номиналов,мин кол-во монет в сумме
 
void qs(long* s_arr, long first, long last)     //сортировка
{
    long i = first, j = last, x = s_arr[(first + last) / 2];
 
    do {
        while (s_arr[i] < x) i++;
        while (s_arr[j] > x) j--;
 
        if(i <= j) {
            if (i < j) swap(s_arr[i], s_arr[j]);
            i++;
            j--;
        }
    } while (i <= j);
 
    if (i < last)
        qs(s_arr, i, last);
    if (first < j)
        qs(s_arr, first,j);
};
 
long st (long i, long o) //находит номер номинала которые меньше либо равен остатку
        {
         while (w[i]>o && i>=0) 
         {i--;};
         return i;
         };
void hf (long i, long o, long N) //перебор вероятных сумм
         {        
          if (o==0)
               {
              if (ras>N) ras=N;
              return;
              } else if (i<0) return;    
          i=st(i,o);
          if (i>-1) {
                     hf(i-1,o,N); 
                     hf(i,o%w[i],N+o/w[i]);                
                     };                                    
        }
int _tmain(int argc, _TCHAR* argv[])
{
 ifstream in ("input.txt");
 ofstream ou ("output.txt");
 long o; //остаток
 in>>n;
 for (int i=0; i<n;i++)
     {
      in>>w[i];
      };
 in>>o;
 qs (w,0, n-1);
 hf (n-1,o,0);
 if (ras==3000000) ras=-1; 
 ou<<ras;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2012, 17:28
Ответы с готовыми решениями:

Найти минимальное число взвешиваний монет на чашечных весах, чтобы определить фальшивку
Есть 15 монет,одна из них фальшивая.Та,что фальшивая весит меньше.Нужно найти минимальное число взвешиваний монет на чашечных весах,чтобы...

Найти минимальное число монет достоинством в 50, 10, 5, и 1 копейку, необходимое для представения некоторой суммы
Найти минимальное число монет достоинством в 50, 10, 5, и 1 копейку, необходимое для представения некоторой суммы, меньшей 1-го рубля. ...

Найти минимальное число монет, которые нужно перевернуть, чтобы все монеты были повернуты вверх одной и той же стороной
На столе лежат n монеток. Некоторые из них лежат вверх решкой, а некоторые – гербом. Определите минимальное число монеток, которые нужно...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2012, 17:28
Помогаю со студенческими работами здесь

Определить минимальное число и номиналы банкнот и монет, необходимые для набора заданной суммы
Имеется сумма в некоторой денежной системе. Определить минимальное число и номиналы банкнот и монет, необходимые для набора этой суммы. ...

Найти минимальное количество монет для выдачи сдачи
Пожалуйста, помогите найти ошибку! Программа ищет минимальное кол-во монет, для выдачи сдачи. У меня в Dev C++ выдает очень большие числа....

Какое минимальное число монет нужно перевернуть, чтобы все монеты лежали одинаковой стороной вверх?
Всем привет прошу помощи или же направления в решение задачи! 1) На столе лежат n монеток. Некоторые из них лежат вверх решкой, а...

Найти 2 двузначных числа, записанных одно за другим, образующие четырёхзначное число, которое делится на их произведение
Здравствуйте , помогите решить задачу пж с помощью циклов , заранее благодарен. След условие : Два двузначных числа, записанных одно за...

Имеются числа 1, 5, 25, 625. необходимо определить какое минимальное кол-во чисел нужно использовать, чтобы собрать введенное число
Имеются числа 1, 5, 25, 625. необходимо определить какое минимальное кол-во чисел нужно использовать, чтобы собрать введенное число. ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Философия технологии
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(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru