*Решено* | Задача по комбинаторике. Генератор комбинаций
Народ, может кто подкинет идею, как конструктивно сделать код, генерирующий все возможные комбинации какого-дибо набора символов.
:type: |
Surround
Мало данных для анализа, как говоривает кое-кто из моих знакомых :) И не говорите так: "конструктивно сделать код". Очень коряво звучит. Это относительно новое слово-паразит, "конструктивно". Ещё недавно было "концептуально". Перорально, млин. |
hasherfrog
извиняюсь, я имел в виду, чтобы код был не грузный и не отнимал большое количество ресурсов на перебор есть набор символов, скажем A и B. Нужно составить, например, все возможные 6-символьные комбинации из этих знаков, причем, чтобы ни одни подряд более 3х раз не повторялся. |
hasherfrog
Цитата:
Surround Цитата:
Код:
program Project1; {by Savant} BBBAAA BABAAA AABAAA ABBAAA BBABAA BAABAA AAABAA ABABAA BABBAA AABBAA ABBBAA BBBABA BBAABA BAAABA ABAABA BABABA AABABA ABBABA BBABBA BAABBA AAABBA ABABBA BABBBA AABBBA BBBAAB BBAAAB ABAAAB BABAAB AABAAB ABBAAB BBABAB BAABAB AAABAB ABABAB BABBAB AABBAB ABBBAB BBBABB BBAABB BAAABB ABAABB BABABB AABABB ABBABB BBABBB BAABBB AAABBB ABABBB p.s.: я тут несколько по геморному скопировал код, если чо не компилится, сообщайте. |
Savant
>> Уж точно не я, данных вполне достаточно Ну-ну :) Условие "что бы каждый символ не повторялся бы более 3-х раз" Вы, очевидно, прочитали в голове Surround с помощью телепатии? И решение, похоже, неверное. Вариант решения (уже 2, 3-й по порядку) - не удовлетворяет вышеупомянутому условию. |
hasherfrog
Не повторялся бы подряд более трёх раз! |
Savant
Да, действительно :) Ну что ж, поздравляю с победой :) |
hasherfrog
Победой в чём? Подожди поздравлять, вот когда явится Surround, посмотрит на всё ЭТО, и не скажет "полный отстой", тогда можешь поздравить :) |
Кстати, задачи, где речь идёт о комбинациях из 2-х символов. можно решать и по-другому :)
Нетрудно заметить, что общее количество комбинаций в данном случае (без дополнительного условия о 3-х) описывается двоичными числами от 0 до 2**6, т.е. символ==бит. И остается только проверить все числа от 0 до 63 на это самое условие... :) |
hasherfrog
Цитата:
Цитата:
|
только чего-то не могу понять, по какому принципу заполняется массив b с символами...
|
Surround
Цитата:
Код:
procedure moving(k,j: Integer); |
немного есть...
|
Случайно вчера наткнулся на этот топик.
Задача показалась мне интересной, и я даже постарался рассмотреть самый общий случай. Исходник на Си. Код:
/* |
Вчера просмотрел свой код и понял, что очень СИЛЬНО проглючил и неэффективно решил задачу.
Хотя функция recursivetransposition была написана корректно, но применить ее надо было к изначально заданному массиву. Код:
#include <stdio.h> |
Время: 07:54. |
Время: 07:54.
© OSzone.net 2001-