|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2013, 17:22 | #1 |
Форумчанин
Регистрация: 13.07.2012
Сообщений: 357
|
Составить комбинацию цифр из массива
Доброго времени суток.
Просто подскажите в каком направлении мыслить. Вводим в массив 4 или более цифр. Составить все комбинации этих цифр. Для 4 это 4!=24 комбинации. Уже не один раз(по разному) в ручную решил этот пример для 4 цифр, никак не могу уцепить логику для решения на Делфи. Без вспомогательных массивов. Решать на 5 цифр не хватило духу. |
02.12.2013, 17:26 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Рекурсия наше все. На форуме и примеры есть, только найти. Кстати совсем не 4!. Некоторые цифры в массиве могут повторяться, тогда комбинаций меньше будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
04.12.2013, 05:47 | #3 |
Форумчанин
Регистрация: 13.07.2012
Сообщений: 357
|
Неа, нужно составить без повторений комбинаций.
И к сожалению на форуме так много информации и всё не по моей теме. Ключевые слова рекурсия и комбинаторика выдают слишком много постов, уже глаза болят. Может всё же на мысль натолкнёте? |
04.12.2013, 07:38 | #4 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Формула для повторяющихся :
N! / (n1!*n2!*n3!*...*nk!) Где N - общее кол-во А n1+n2+n3+...+nk = N Теперь о решении.. тыц Еще, господин Меньшиков в своей книге "Олимпиадные задачи по программированию".. приводит 3 варианта.. (там задача называется перестановки 2) Один генерируется лексикографически, без доп. массивов А другие 2 требует доп.. (пишу по памяти => могу ошибаться).. |
05.12.2013, 03:50 | #5 |
Форумчанин
Регистрация: 13.07.2012
Сообщений: 357
|
Значит я ужасно, непроходимо тупой человек. А ещё и не умеющий читать чужой код.
Ладно то с сообщениями на форуме. Книга Меньшикова помогла, я понял, что делать, но не понял как. Написал свой код. Для случая если количество цифр равно 4 и цифры не повторяются(!). Потом изменить под любое кол-во не составит труда. И как по Меньшикову пошел шпарить своего монстра. Что он должен делать. 1. С начала ввод данных. Лучше всего 1, 2, 3, 4. 2. Заполнить 6 раз каждый 5-й эл-т(начиная от 1-го) единицами выполнять до 6 четверки эл-в. Потом дальше заполнить двойками аналогичным образом до 12. и т.д. 3. Тут попытался объяснить, но очень запутанно получилось. Лучше скрин, там всё видно сразу http://php-studia.ru/?v=img201qqq.jpg Код:
Почему когда я раскомментирую строку for g:=1 to 4 do в части ужас №2 и присвою q:=g; Код:
Код:
Оно выдает какую то чушь в конце. Не ругайте, лучше помогите. Последний раз редактировалось Artsiom; 05.12.2013 в 04:05. |
05.12.2013, 07:05 | #6 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Ааа..
Всё ясно.. Это мы с Аватаром намудрили.. Предлагаю Вам вот такой вот код Код:
А суть чрезвычайно просто.. Вы берете 1-ый элемент, и ставите на его место все остальные. Затем берете 2-ой элемент, и снова ставите на его место оставшиеся.. |
05.12.2013, 23:19 | #7 |
Форумчанин
Регистрация: 13.07.2012
Сообщений: 357
|
Ооо! Спасибо большое. Конечно всё же интересно, что я упустил из виду в своем недорешении, но всё равно спасибо.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составить два массива с различными простыми числами среди элементов исходного массива и их частотами | maksimum | Помощь студентам | 7 | 09.04.2012 17:05 |
Надо составить программу которая отображает произношении цифр | Алиш | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 27.01.2011 08:29 |
Pascal: Составить программу генерирования массива B, состящего из отрицательных элементов массива a | mrRastom | Помощь студентам | 2 | 15.01.2011 14:33 |
Хук на комбинацию | W0LF | Win Api | 9 | 26.07.2009 10:33 |
Подсчет значащих цифр массива | RomT24 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 27.04.2009 17:32 |