![]() |
|
|
![]()
|
|
| Litanika |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.5.2006 Репутация: нет Всего: нет |
Помогите запрограммировать такую штуку: вводится число классов, в каждом классе число элементов (например числа). Нужно получить строки заданной длины N из всевозможных перестановок этих чисел. Например, 4 класса, в них 2, 2, 1, 1 элементов: [1,1], [2,2], [3], [4], длина строки =3. Должно получиться:
112 113 114 121 122 123 124 131 132 134 141 142 143 211 212 213 214 221 223 232 234 241 242 243 311 312 314 321 322 324 341 342 411 412 413 421 422 423 431 432 Вся проблема в том, что заранее неизвестна длина строки N, и поэтому нельзя сделать просто определенное число вложенных циклов. Помогите пожалуйста!! очень нужно, желательно на Delphi |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Просьба простить, код столетней давности, неоптимизированный и вырваный из кода.
Код генерирует все строки заданной длинны из 255 символов. Можно заменить массивом символов. На ваше усмотрение. Это сообщение отредактировал(а) SoWa - 13.5.2006, 17:39 -------------------- Всем добра |
|||
|
||||
| Litanika |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.5.2006 Репутация: нет Всего: нет |
SoWa
Это не совсем то, что мне нужно, но почти похоже на правду. Этот способ перебирает ВСЕ сочетания, а у меня количество элементов каждого типа ограничено, например если в твоем примере взять не символы , а цифры, и например будет комбинация 444, то у меня может быть только одна 4. То есть потом придется как-то отсеивать или еще что-то придумывать. А мне нужен алгоритм, чтобы только из существующих элементов сочетания делал. Добавлено @ 19:52 То есть еще можно так сформулировать: дан массив элементов, сформировать всевозможные сочетания заданной длины и меньше (макс. длина 15 - все сочетания длигой 1, 2, ..., 15), пример массива из предыдущего примера - [1,1,2,2,3,4] |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Вот я и говорю- подставляешь вместо s:=s+chr(i); подстановку из массива.
Это сообщение отредактировал(а) SoWa - 13.5.2006, 20:25 -------------------- Всем добра |
|||
|
||||
| Litanika |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.5.2006 Репутация: нет Всего: нет |
SoWa,
если я правильно поняла, то я делаю массив из элементов (будет arr=[1,1,2,2,3,4]), делаю s:=s+a[i], i пробегает от 1 до length(arr)? если так сделать, то ничего путного не получается, она мне делает 1, 11, 111 {для первой единицы}, 111, 112, 113, 114, {потом для второй начинает} 11, 111, 111, ... Так что не получается или что-то я не догоняю? |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
В общем, этот код даст тебе все перестановки из данного множества. Выбирать повторения придется самой. Это не так сожно. И работу не на много замедлит... Постарайся сама написать выбор повторяющихся элементов и однородных строк типа 222.
-------------------- Всем добра |
|||
|
||||
| Litanika |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 13.5.2006 Репутация: нет Всего: нет |
SoWa, ок спасибо за помощь, надеюсь щас все получится у меня
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |