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

Придумать для задачи 2 алгоритма и сравнить их порядок сложности

15.09.2017, 21:33. Показов 1377. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех программистов! Начался, в общем, в универе такой предмет как "алгоритмы и структуры данных", сегодня была 1-я лаба, там такое задание:


В общем-то, задача кажется очень простой, но я почему-то в ступоре и не знаю как подступится, пока что сделал просто ввод данных с клавиатуры. Мне хочется здесь использовать как-то двумерный массив, но ума не приложу как, в С++ новичок, до этого изучали Си. В общем, вот, что имеется:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int n, m, v, c = 6;
 
    cout << "Enter the number of cubes: ";
    cin >> n;
    cout << "Enter the sum you need: ";
    cin >> m;
 
    int **a = new int *[n];
    for (int i = 0; i <n; i++)
    {
        a[i] = new int[c];
    }
 
    _getch();
    return 0;
}
Было бы не плохо, если бы помогли решить хотя бы одним способом, не говоря уже о двух...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2017, 21:33
Ответы с готовыми решениями:

Придумать для задачи 2 алгоритма и сравнить их порядок сложности
Здравствуйте! В универе начали изучать такой прекрасный предмет как &quot;Структуры и алгоритмы данных&quot; и препод выдал следующее задание: ...

Не могу придумать код для задачи по JavaScript
Доброго времени суток, дорогие друзья. Помогите, пожалуйста, решить хотя бы 2 задачи из списка снизу. Буду очень благодарен за помощь. ...

Не получается придумать решение для задачи: вывод даты следующего воскресенья
Здравствуйте. Задача состоит в том чтобы программа(C#) выводила дату следующего воскресенья при определении дня недели даты которая была...

11
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.09.2017, 23:17
Цитата Сообщение от SammYDeviL Посмотреть сообщение
Было бы не плохо, если бы
вы показали задание в виде текста
0
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
15.09.2017, 23:22  [ТС]
Байт, в смысле? Не совсем понял, что вы имеете ввиду.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.09.2017, 23:37
Цитата Сообщение от SammYDeviL Посмотреть сообщение
Не совсем понял, что вы имеете ввиду.
Глазки болят. Картинки ваши смотреть. Да и правила есть... Не читали?
0
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
15.09.2017, 23:49  [ТС]
Байт, вы правы, виноват. Я бы с удовольствием отредактировал, да вот только либо я уже спать хочу, но я не вижу на этом форуме кнопки редактирования в принципе.

Вот задание:
Придумать несколько алгоритмов и сравнить их порядок сложности в лучшем, среднем и худшем случаях для решения следующей задачи.
Игроки в кости бросают n кубиков. На каждом кубике может выпасть число от 1 до 6. Сколько существует вариантов получить сумму, равную m.
Комментарий 1: число кубиков n и нужная сумма m должны задаваться с клавиатуры.
Комментарий 2: для улучшения эффективности можно использовать различные варианты отсечения.

Пример входных данных №1:
n=2, m=10
Результат:
Вариантов – 3
(4;6), (5;5), (6;4)

Пример входных данных №2:
n=3, m=4
Результат:
Вариантов – 3
(1;1;2), (1;2;1), (2;1;1)

P.S. Очень странно, под этим сообщение есть кнопка "правка", а под предыдущими нет.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.09.2017, 23:53
Цитата Сообщение от SammYDeviL Посмотреть сообщение
но я не вижу на этом форуме кнопки редактирования в принципе.
Редактировать (исправлять) тут можно только свеженькие посты. Но вы правы - можно в новом посте все написать.
Цитата Сообщение от SammYDeviL Посмотреть сообщение
я уже спать хочу
я тоже
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
16.09.2017, 01:29
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int task(int n, int m) {
  int s = 0;
  if (n == 1)
    return (m >= 1 && m <= 6) ? 1 : 0;
  for (int i = 1; i <= 6; ++i) {
    s += task(n - 1, m - i);
  }
  return s;
}
 
int main() {
  std::cout << task(2, 10) << "\n";
  return 0;
}
2
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
16.09.2017, 19:19  [ТС]
AlexVRud, что-то я не пойму вообще, как он работает. Вроде кол-во вариантов правильное выдаёт, но я абсолютно не пойму почему, и как до такого вообще можно было додуматься?)
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
16.09.2017, 19:45
я тот же алгоритм предложить хотел, но он не выдает сами комбинации после их числа, как в примерах
SammYDeviL, работает он элементарно
если куб всего один, вариант тоже всего один если желаемое число от 1 до 6 и ни одного если число меньше 1 или больше 6.
Если куба два, перебираем в цикле все возможные варианты первого. Тогда число, которое должно выпасть на втором равно желаемому минус то что выпало на первом. То есть перебираем в цикле значения куба и для каждого из них вызываем функцию из 1-го варианта.
Если куба 3, аналогично перебираем первый куб и для каждого варианта вызываем функцию из 2-го варианта.
Для любого другого числа N точно также перебираем первый куб, после чего вызываем функцию для (N-1) кубов.
Именно это делается в приведенном коде. Рекурсия.
1
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
16.09.2017, 20:05  [ТС]
COKPOWEHEU, ага, я вроде понял, спасибо за разъяснение.
Правда вот да, как теперь сделать так, чтобы выводил конкретно числа?
На самом деле, мб это и не обязательно. В задании то спрашивается:"Сколько вариантов?"
0
 Аватар для LazySlacker
93 / 77 / 31
Регистрация: 29.08.2017
Сообщений: 188
18.09.2017, 14:35
Просто парочка оптимизаций (тех самых отсечений).

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
#include <iostream>
 
using namespace std;
 
int task(int n, int m)
{
    if (n < 0) return 0;
    if (n == 0) return m == 0 ? 1 : 0;
    if (n == 1) return 1 <= m && m <= 6 ? 1 : 0;
    if (n > m || n * 6 < m) return 0; // набрать сумму невозможно (кубиков слишком много или слишком мало)
    if (n == m || n * 6 == m) return 1; // сумма может набраться только одним способом (все единички или все шестерки)
    int s = 0;
    for (int i = 1; i <= 6; ++i)
    {
        s += task(n - 1, m - i);
    }
    return s;
}
 
int main(void)
{
    int n, m;
    cin >> n >> m;
    cout << task(n, m) << endl;
    return 0;
}
1
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
18.09.2017, 17:28  [ТС]
LazySlacker, очень благодараствую!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2017, 17:28
Помогаю со студенческими работами здесь

Придумать матрицу над конечным полем Fp имеющим порядок 23
Придумать матрицу 2x2 или более над каким-нибудь конечным полем Fp имеющим порядок 23. Буду очень благодарен в помощи по решению примера.

Придумать две задачи для темы "Магазин комплектующих"
На курсовой Тема: магазин комплектующих надо придумать 2 проблемный задачи подскажите что можно сделать

Оценка сложности алгоритма
Есть пример по оценке сложности,весть гугл перерыл уже,но примеров как делать такую оценку не нашёл. Нужно помочь сделать оценку к...

Оценка сложности алгоритма
Подскажите какая сложность у данного алгоритма, искал в интернете что за алгоритм не нашел a_pow:=a; result:=1; while k&gt;0 do...

Оценка сложности алгоритма
Здравствуйте, уважаемые форумчане! Появилась необходимость оценки временной сложности алгоритма (O(f(n))). Вот таблица получившихся...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru