|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
|
Вывести все "интересные" разбиения числа на слагаемые09.01.2019, 18:58. Показов 4862. Ответов 18
Метки нет (Все метки)
Недавно на кружке математики Дезидерий узнал о разбиении на слагаемые.
Разбивкой числа n на слагаемые называется представление его в виде суммы неубывающая набора натуральных чисел. Например, 9 = 1 + 2 + 2 + 4 является разбивкой числа 9 на слагаемые. Дезидерий называет разбиение интересным, если никакие два слагаемых в наборе не равны и не различаются ровно на 1. Так, например, разбиения, приведенное выше не является интересным, а разбиение 9 = 1 + 3 + 5 - интересное. Помогите Дезидерию вывести все интересные разбиение числа n на слагаемые. Входные данные: На ввод подается одно целое число n (1 ≤ n ≤ 80). Исходные данные: Выведите все интересные разбиение числа n на слагаемые. Разбивку можно выводить в произвольном порядке. Следуйте формату. Пример: stdin 9 stdout 9=1+3+5 9=1+8 9=2+7 9=3+6 9=9 Алгоритм решения: Кликните здесь для просмотра всего текста
Напишем функцию rek(vector <int> ans, int p, int sum), в которой vector <int> ans - вектор собраных поточных слагаемых, int p - последнее добавленное слагаемое, int sum - собранная поточная сумма. Делаем рекурсивную функцию: - если собранная сумма sum>n, то выходим: if (sum>n) return; - добавляем последнее слагаемое в вектор ans: ans.push_back(p); - если sum==n то выводим собранный набор слагаемых: if (sum==0) {out(ans); return;} - запускаем рекурсию со слагаемого p+2, чтоб каждое последующее слагаемое было больше за предыдущее, это чтоб небыло повторения согласно условия задания: for (long long i=p+2; i<=n-sum; i++) rek(ans,i,sum+i); Желательно написать программу без использования векторов (и без динамики). (использовать массивы и рекурсию можно)
0
|
|
| 09.01.2019, 18:58 | |
|
Ответы с готовыми решениями:
18
Перечислить все разбиения N на целые положительные слагаемые c использованием рекурсии Вывести все интересные разбиения числа n на слагаемые Перечислить все разбиения целого положительного числа n на целые положительные слагаемые (разбиения, отличающиеся лишь п |
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 09.01.2019, 19:55 | |
|
Дезидерий, сам не пытался чего-нибудь сделать сделать? Алгоритм-то есть. И на первый взгляд - хороший.
0
|
|
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
||||||
| 09.01.2019, 20:38 [ТС] | ||||||
|
Байт, Дезидерий, векторы не учил еще но алгоритм нашел.))
Вот что, Дезидерий, пытался написать: )) Кликните здесь для просмотра всего текста
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 09.01.2019, 20:59 | ||
|
aassii, Ага! Векторов, значит, не хочется...А к чему тама они - ума не приложу. Можно с обычными массивами работать...
И рекурсии в творении уважаемого Дезидерий, нигде не вижу. А может и не нужна она... Однако, было дело. Решали уже эту задачку на форуме. Правда, без такого смешного условия Сейчас ни писать, ни искать неохота. Будет светлый момент - попробую. Конечно, надо так построить все, чтобы числа двигались в одном направлении. Убывали или возрастали. Мне больше нравится, чтобы убывали. Но это симметрично, и дело вкуса и метафоры.
0
|
||
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
||||||||
| 09.01.2019, 22:36 [ТС] | ||||||||
|
Добавлено через 1 час 16 минут Кликните здесь для просмотра всего текста
0
|
||||||||
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
|
||
| 09.01.2019, 23:01 | ||
|
0
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 09.01.2019, 23:06 | |||
|
Добавлено через 2 минуты
0
|
|||
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
|||
| 09.01.2019, 23:20 [ТС] | |||
|
Добавлено через 1 минуту Чтоб вложится во время нужно както использовать приведенный мною алгоритм решения, но он на вектора ((.
0
|
|||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 09.01.2019, 23:40 | |
|
aassii, я вам предлагаю о предложении ReDoX вообще не задумываться.
Добавлено через 3 минуты aassii, там все в самом деле не очень сложно. Можно и рекурсией, можно и без. И без векторов. Я как-бы уже вижу решение. Но в код пока не складывается. Вечер уже. Да и гости совсем недавно ушли...
0
|
|
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
|
|
| 10.01.2019, 00:24 | |
|
0
|
|
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
||||||
| 10.01.2019, 01:12 [ТС] | ||||||
|
Второй светлый момент: условие учтено и задача в векторах решена))
Кликните здесь для просмотра всего текста
Вот если бы ее переделать без использования векторов, то будет день!
0
|
||||||
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
|
|
| 10.01.2019, 01:32 | |
|
0
|
|
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
||||||
| 10.01.2019, 01:49 [ТС] | ||||||
|
Кликните здесь для просмотра всего текста
0
|
||||||
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
|
||||||
| 10.01.2019, 02:17 | ||||||
Сообщение было отмечено aassii как решение
Решение
За правильность не ручаюсь, но на девятке работает:
1
|
||||||
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
|
| 10.01.2019, 23:13 [ТС] | |
|
0
|
|
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
|
|
| 10.01.2019, 23:18 | |
|
0
|
|
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
|
| 10.01.2019, 23:34 [ТС] | |
|
Так и сделал)) Спасибо.
0
|
|
|
5 / 4 / 1
Регистрация: 29.08.2018
Сообщений: 12
|
||
| 11.01.2019, 00:10 | ||
|
0
|
||
|
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
|
|
| 11.01.2019, 00:35 [ТС] | |
|
0
|
|
| 11.01.2019, 00:35 | |
|
Помогаю со студенческими работами здесь
19
Перечислить все разбиения целого положительного числа на целые положительные слагаемые
Варианты разбиения числа n на слагаемые Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|