|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2013, 21:52 | #1 |
Форумчанин
Регистрация: 08.05.2010
Сообщений: 177
|
Перебор всєх возможных варіантов множества
Сразу скажу, что мне нужен совет по алгоритму перебора. Вводим 1> чисел. Для примера вводим 25, 45, 65. Начинаем перебор с (25, 25, 25, 25, 25), исходим из перебора (65, 65, 65, 65, 65). Все указанные числа могут повторяться произвольное число раз.
|
01.04.2013, 23:26 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
во-первых, множество, в данном случае, не очень подходящий тип данных, лучше использовать массив.
во-вторых, вообще ничего сложного. смотрите, у вас есть массив с исходными элементами. Пусть элементы пронумерованы от 0 до 2 (т.к. всего три элемента) 0-й элемент - это 25 1-й элемент - это 45 2-й элемент - это 65 теперь заполняем структуру (это либо ещё один массив, либо строка, либо любая другая структура, где можно легко перебирать элементы по индексу) числами 0, 0, 0, 0, 0 это начальная позиция (когда будем ещё выводить, получится 25, 25, 25, 25, 25) прибавляем 1. получаем 0, 0, 0, 0, 1 (когда будем ещё выводить, получится 25, 25, 25, 25, 45) прибавляем 1. получаем 0, 0, 0, 0, 2 (когда будем ещё выводить, получится 25, 25, 25, 25, 65) прибавляем 1. получаем 0, 0, 0, 1, 0 {у нас 3-элемента, поэтому, максимальный индекс может быть 2} обращаем внимание, что при добавлении единицы учитываем возникающий перенос в более старший разряд.. (когда будем ещё выводить, получится 25, 25, 25, 45, 25) прибавляем 1. получаем 0, 0, 0, 1, 1 (когда будем ещё выводить, получится 25, 25, 25, 45, 45) прибавляем 1. получаем 0, 0, 0, 1, 2 прибавляем 1. получаем 0, 0, 0, 2, 0 и т.д. разумеется, прибавляем 1 в цикле, до тех пор, пока после очередного прибавления не возникнет перенос из старшего разряда. вот и всё! p.s. C/C++ я не знаю, примером кода помочь не смогу.. Но, если Вы поняли алгоритм, Вы сами легко напишете программу |
01.04.2013, 23:55 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Serge_Bliznykov, понравился алгоритм - не удержался и реализовал
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 02.04.2013 в 00:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
с++ Перебор всех возможных подмножеств множества целых чисел | Modlika17 | Помощь студентам | 19 | 10.01.2012 11:09 |
Перебор всех возможных вариантов | phenix | Помощь студентам | 3 | 03.12.2010 21:29 |
Перебор возможных комбинаций в матрице N*N | Руслан_911 | Помощь студентам | 3 | 25.11.2010 20:35 |
Перебор возможных комбинаций символов | Toxask8 | Общие вопросы C/C++ | 1 | 12.12.2009 21:33 |
Перебор всех возможных вариантов | [MI_nor] | Общие вопросы C/C++ | 9 | 01.04.2009 21:17 |