Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простенький алгоритм с 3 числами, все возможные варианты сложения 3 чисел 
V
    Опции темы
kelario
Дата 14.11.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



Помогите пожалуйста.Вроде всё должно быть просто,но что то у меня не выходит.
Значит есть масив.В нём Х элементов.Ну допустим 5.Каждому элементу присвоено своё значение.К примеру 3,4,6,7,8.Как вывести все возможные варианты построения ряда из 3 цифр на экран ? Цифры не должны повторятся.Тоесть в данном случае это будет:
346
347
348
367
368
378
467
468
478
678
Получается 5!\3!*(5-3)!=10 вариантов.
Какой будет алгоритм для вычисления всех вариантов при любых числах и любом количестве элементов(ряд всегда по 3 элемента)? 

Это сообщение отредактировал(а) kelario - 14.11.2008, 16:04
PM MAIL   Вверх
mes
Дата 14.11.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Код

const int siz = 5; // кол-во элеметов

for (int i=0; i<siz; ++i) //первая колонка
  for (int j=i+1; j<siz; ++j) // вторая колонка
    for (int l=j+1; l<siz; ++l) // третья колонка
      std::cout << i << j << l << std::endl; // индексы i,j,l заменить на доступ к элементу по индексу.

+1 в цикле, чтоб не строил из одних и тех же элементов. То есть чтоб в ряду не было повторений,  иначе /*+1*/ закомментировать.
P.S. Предполагается что в массиве, все числа разные.

Это сообщение отредактировал(а) mes - 14.11.2008, 16:34


--------------------
PM MAIL WWW   Вверх
UniBomb
Дата 14.11.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 97



Против лома нет приёма если нет другого лома. Я предлагаю рассмотреть этот самый другой лом:

надо заранее сделать двумерный массив примерно такого вида:

000
001
002
003
...
997
998
999

знаю что он большой, но не суть. Потом когда ты считаеш массив заданных чисел то выводи на экран только те элементы двумерного массива, которые содержат введёные цифры...  smile  надеюсь понятно изложил  smile  
PM MAIL ICQ Skype   Вверх
mes
Дата 14.11.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(UniBomb @  14.11.2008,  16:25 Найти цитируемый пост)
Против лома нет приёма если нет другого лома. Я предлагаю рассмотреть этот самый другой лом:

   smile 
Цитата(UniBomb @  14.11.2008,  16:25 Найти цитируемый пост)
знаю что он большой, но не суть

    А если в ряду к примеру 15 цифр ?  smile 

Это сообщение отредактировал(а) mes - 14.11.2008, 16:38


--------------------
PM MAIL WWW   Вверх
UniBomb
Дата 14.11.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 97



Цитата(mes @  14.11.2008,  16:37 Найти цитируемый пост)
А если в ряду к примеру 15 цифр ?

То станет ещё веселей, только и всего  smile 
PM MAIL ICQ Skype   Вверх
kelario
Дата 14.11.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.9.2008

Репутация: нет
Всего: нет



mes спасибо огромное,всё работает! smile  я примерно так себе это и представлял.Только не мог  правда в С++ это толком  реализовать smile 

unibomb тоже спасибо smile оригинальный способ,но мне к сожалению не годится,так как ещё нужно выполнить действия над отдельными элементами после выявления комбинаций.

Это сообщение отредактировал(а) kelario - 14.11.2008, 23:42
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.