Вот эти 12 перестановок из чисел 1,2,3,4 назовём уникальными в таком смысле: ни в каких двух перестановках в одинаковых позициях нет одинаковой пары чисел:
1 2 3 4
1 3 4 2
1 4 2 3
2 1 4 3
2 3 1 4
2 4 3 1
3 1 2 4
3 2 4 1
3 4 1 2
4 1 3 2
4 2 1 3
4 3 2 1
Например, в первой перестановке в первой и второй позиции имеем пару чисел 1,2; больше ни в какой престановке в этих позициях нет такой пары чисел.
Задача такая: составить 56 уникальных перестановок из чисел 1,2,3,4,5,6,7,8 (ещё 72 перестановки из чисел 1,2,3,...,9 и 240 перестановок из чисел 1,2,3,...,16).
Вот начала писать перестановки из чисел 1,2,...,8. Первые семь штук:
1,2,3,4,5,6,7,8
1,3,4,5,6,7,8,2
1,4,5,6,7,8,2,3
1,5,6,7,8,2,3,4
1,6,7,8,2,3,4,5
1,7,8,2,3,4,5,6
1,8,2,3,4,5,6,7
Дальше не знаю, как писать.
По-хорошему, конечно, надо программку написать. Но для 16 чисел, наверное, очень долго работать будет
Слишком много перестановок. Может быть, тут какая-то хорошая есть закономерность, или хорошая оптимизирующая тупой перебор идея.
Помогите, пожалуйста

square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #30 : Июнь 10, 2012, 14:33:31 � |
|
Zhekas я что-то пока не поняла логику программы.
Вот запустила я программу с параметром 6. Она первые 30 комбинаций сразу нашла. Что она делает дальше? Целый час уже работает и всё на одном месте. Неужели она так долго ищет 31-ую комбинацию? Что-то тут не так... Тут перебор-то вроде не очень большой.
Я делала программку для добавления только одной комбинации. Беру набор из M комбинаций и по программе пытаюсь добавить (M+1)-ую комбинацию. Так программа моментально это определяет: можно добавить или нельзя.
А ваша программа целый час думала над 31-ой комбинацией и так ничего и не придумала.
Нет ли у вас где-то ошибки? Может, где-то в циклах ошиблись, не туда сделали переход. Это часто у меня бывает. И тогда программа просто зацикливается.
Короче, я пока прервала программу. Тут ничего не светит, не только 32-ой, но даже и 31-комбинации не находит программа.
|
|
� Последнее редактирование: Июнь 10, 2012, 14:36:15 от square �
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #31 : Июнь 10, 2012, 14:49:03 � |
|
Вот смотрите пример. Запускаю вашу программу с параметром 1. Она мгновенно выдаёт 30 комбинаций:
Pervaia stroka: 1 1 1 1 1 1 Maximum=30 1 1 1 1 1 1 1 2 2 2 2 2 1 3 3 3 3 3 1 4 4 4 4 4 1 5 5 5 5 5 1 6 6 6 6 6 2 1 2 3 4 5 2 2 1 4 3 6 2 3 4 5 6 1 2 4 3 6 5 2 2 5 6 1 2 3 2 6 5 2 1 4 3 1 3 5 2 4 3 2 4 6 1 3 3 3 5 1 4 6 3 4 6 2 3 5 3 5 1 3 6 2 3 6 2 4 5 1 4 1 4 2 5 6 4 2 3 1 6 5 4 3 6 4 1 2 4 4 5 3 2 1 4 5 2 6 3 4 4 6 1 5 4 3 5 1 5 4 6 3 5 2 6 3 5 4 5 3 1 6 2 5 5 4 2 5 1 6 5 5 3 2 4 1 5 6 4 1 3 2
Дальше беру эти 30 комбинаций и скармливаю своей программе, она моментально отрабатывает и говорит, что добавить 31-ую комбинацию тут нельзя.
Всё! Над чем думает ваша программа целый час?
А может, она тоже уже всё обдумала и решила, но тогда как-то должно это показаться в окне программы, что она закончила работу. А то впечатление такое, что она всё работает, работает...
|
|
|
Записан
|
|
|
|
zhekas
Гений-Говорун
Offline
Сообщений: 1035
СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487
|
 |
� Ответ #32 : Июнь 10, 2012, 15:05:28 � |
|
Я поставил значение max=29. Программа перебирает все варианты с нуля. Как только строк стало 30 она присвоила max=30 и вывела эти строки. Дальше, следующую строку она не нашла и стала перебирать следующие комбинации. А так как max=30 то новые комбинации из 30 строк она не выводит. А будет выводить теперь только если появится 31 строка и больше
|
|
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #33 : Июнь 10, 2012, 15:41:12 � |
|
А, теперь понятно. То есть она перебирает дальше. Ну, какой-нибудь индикатор вывели бы, чтобы видеть, что она перебирает. А так ничего не понятно, что она там делает, или, может, просто висит. Получается, что мне с 31-ой комбинацией в самом первом вашем наборе крупно повезло 
|
|
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #34 : Июнь 11, 2012, 04:58:22 � |
|
Zhekasоставим пока комбинации из чисел 1,2,3,4,5,6. Что-то программа у меня не выдала ни одного набора даже из 31 комбинации. Подумаем о комбинициях из чисел 1,2,3,...,10. Я посмотрела на набор из 30 комбинаций, полученный по вашей программе (чуть выше он выложен) с первой строкой 1,1,1,1,1,1. По-моему, обалденная закономерность! Ровно 5 групп по 6 штук в каждой группе, первая группа начинается с числа 1, вторая - с числа 2 и т.д. У меня есть предположение, что аналогичную группу комбинаций можно получить из чисел 1,2,3,...,10. Будет 9 групп по 10 штук в каждой, первая группа будет начинаться с числа 1, вторая - с числа 2. и т.д. Ну, например, вот первая группа, пишу по аналогии с первой группой комбинаций из чисел 1,2,3,4,5,6: 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 3 3 1 4 4 4 4 4 4 4 4 4 1 5 5 5 5 5 5 5 5 5 1 6 6 6 6 6 6 6 6 6 1 7 7 7 7 7 7 7 7 7 1 8 8 8 8 8 8 8 8 8 1 9 9 9 9 9 9 9 9 9 1 10 10 10 10 10 10 10 10 10 Если вам не трудно, проверьте, пожалуйста, мою гипотезу. Получится ли набор из 90 комбинаций? Очень интересно! У вас программа-то уже готовая, несложно проверить.
|
|
� Последнее редактирование: Июнь 11, 2012, 05:02:58 от square �
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #35 : Июнь 11, 2012, 05:51:53 � |
|
Пытаюсь составить вторую группу комбинаций по аналогии, пока вот что получилось: 2 1 2 3 4 5 6 7 8 9 2 2 x x x x x x x 10 2 3 x x x x x x 10 1 2 4 x x x x x 10 x 2 2 5 x x x x 10 x x 3 2 6 x x x 10 x x x 4 2 7 x x 10 x x x x 5 2 8 x 10 x x x x x 6 2 9 10 x x x x x x 7 2 10 x x x x x x x 8 Похоже?  Кто заполнит группу? Спасибо! (авансом  )
|
|
� Последнее редактирование: Июнь 11, 2012, 05:54:43 от square �
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #36 : Июнь 11, 2012, 10:41:54 � |
|
Написала программку для добавления к имеющемуся набору по одной комбинации. Удалось получить такой набор комбинаций: 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 3 3 1 4 4 4 4 4 4 4 4 4 1 5 5 5 5 5 5 5 5 5 1 6 6 6 6 6 6 6 6 6 1 7 7 7 7 7 7 7 7 7 1 8 8 8 8 8 8 8 8 8 1 9 9 9 9 9 9 9 9 9 1 10 10 10 10 10 10 10 10 10 2 1 2 3 4 5 6 7 8 9 2 2 1 4 3 6 5 8 7 10 2 3 4 5 6 7 8 9 10 1 2 4 3 6 5 8 7 10 9 2 2 5 6 7 8 9 10 1 4 3 2 6 5 8 7 10 9 3 1 4 2 7 8 9 10 1 3 4 6 5 2 8 7 10 9 4 1 5 3 6 2 9 10 1 2 3 4 6 5 7 Увы, плохо! Во второй группе (комбинации начинаются с числа 2) не удалось добавить ещё одну комбинацию, их должно быть 10 штук. Всё неправильно тогда. Надо писать программу полного перебора. Почти уверена, что аналогия с комбинациями из чисел 1,2,3,4,5,6 имеет место. И помощник мой пропал 
|
|
� Последнее редактирование: Июнь 11, 2012, 10:44:08 от square �
|
Записан
|
|
|
|
zhekas
Гений-Говорун
Offline
Сообщений: 1035
СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487
|
 |
� Ответ #37 : Июнь 11, 2012, 10:58:40 � |
|
С шестёрками всё глухо. Почти за сутки первая строка не изменила ни одного числа. А для того чтобы сделать полный перебор спараметром нужно 6^3 комбинаций первой строки.
|
|
� Последнее редактирование: Июнь 11, 2012, 11:02:56 от zhekas �
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #38 : Июнь 11, 2012, 11:17:32 � |
|
Бросьте шестёрки!
Посмотрите, пожалуйста, на задачку про числа 1,2,3,...,10. Мне кажется, что набор из 90 комбинаций из этих чисел составится мгновенно, так же, как составился набор из 30 комбинаций чисел 1,2,3,4,5,6. У вас программа, как я понимаю, есть для n=10, вы писали её для поиска уникальных перестановок. Надо теперь только разрешить повторение чисел в комбинациях.
Если будет долго работать программа, шлите её мне, я покручу.
|
|
� Последнее редактирование: Июнь 11, 2012, 11:19:38 от square �
|
Записан
|
|
|
|
zhekas
Гений-Говорун
Offline
Сообщений: 1035
СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487
|
 |
� Ответ #39 : Июнь 11, 2012, 11:42:04 � |
|
а толку крутить. Она на 20-й строке уже тупит.
|
|
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #40 : Июнь 11, 2012, 11:44:26 � |
|
А первые 19 комбинаций покажите, пожалуйста.
Я вот по своей программке тоже пыталась вторую группу сделать, 9 комбинаций в ней получилось, а десятой нету! Не добавляется.
|
|
|
Записан
|
|
|
|
zhekas
Гений-Говорун
Offline
Сообщений: 1035
СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487
|
 |
� Ответ #41 : Июнь 11, 2012, 11:48:32 � |
|
1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 3 3 1 4 4 4 4 4 4 4 4 4 1 5 5 5 5 5 5 5 5 5 1 6 6 6 6 6 6 6 6 6 1 7 7 7 7 7 7 7 7 7 1 8 8 8 8 8 8 8 8 8 1 9 9 9 9 9 9 9 9 9 1 10 10 10 10 10 10 10 10 10 2 1 2 3 4 5 6 7 8 9 2 2 1 4 3 6 5 8 7 10 2 3 4 1 2 7 8 5 9 6 2 4 3 2 1 8 7 6 10 5 2 5 6 7 8 1 2 9 3 4 2 6 5 8 7 2 1 10 4 3 2 7 8 5 6 9 10 3 1 2 2 8 7 9 10 3 4 2 5 1 2 9 10 6 5 4 3 1 2 7
|
|
|
Записан
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #42 : Июнь 11, 2012, 11:58:30 � |
|
Нет, у меня не такая вторая группа получилась, а первая такая же.
Но, чёрт подери, должна быть аналогия!
Может, как-нибудь без программы в эту аналогию проникнуть?
Всё равно пришлите программу, попробую покрутить. Только, пожалуйста, сделайте вывод на экран чего-нибудь перебираемого, чтобы можно было видеть динамику работы программы.
|
|
� Последнее редактирование: Июнь 11, 2012, 12:02:00 от square �
|
Записан
|
|
|
|
zhekas
Гений-Говорун
Offline
Сообщений: 1035
СПАСИБО
-вы поблагодарили: 34
-вас поблагодарили: 487
|
 |
� Ответ #43 : Июнь 11, 2012, 12:01:16 � |
|
Для аналогии. Вот вам для n=8 Показать скрытый текст 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 1 4 4 4 4 4 4 4 1 5 5 5 5 5 5 5 1 6 6 6 6 6 6 6 1 7 7 7 7 7 7 7 1 8 8 8 8 8 8 8 2 1 2 3 4 5 6 7 2 2 1 4 3 6 5 8 2 3 4 1 2 7 8 5 2 4 3 2 1 8 7 6 2 5 6 7 8 1 2 3 2 6 5 8 7 2 1 4 2 7 8 5 6 3 4 1 2 8 7 6 5 4 3 2 3 1 3 5 7 4 2 8 3 2 4 6 8 3 1 7 3 3 1 7 5 2 4 6 3 4 2 8 6 1 3 5 3 5 7 1 3 8 6 4 3 6 8 2 4 7 5 3 3 7 5 3 1 6 8 2 3 8 6 4 2 5 7 1 4 1 4 7 6 8 5 2 4 2 3 8 5 7 6 1 4 3 2 5 8 6 7 4 4 4 1 6 7 5 8 3 4 5 8 3 2 4 1 6 4 6 7 4 1 3 2 5 4 7 6 1 4 2 3 8 4 8 5 2 3 1 4 7 5 1 5 4 8 7 3 6 5 2 6 3 7 8 4 5 5 3 7 2 6 5 1 8 5 4 8 1 5 6 2 7 5 5 1 8 4 3 7 2 5 6 2 7 3 4 8 1 5 7 3 6 2 1 5 4 5 8 4 5 1 2 6 3 6 1 6 2 5 3 8 4 6 2 5 1 6 4 7 3 6 3 8 4 7 1 6 2 6 4 7 3 8 2 5 1 6 5 2 6 1 7 4 8 6 6 1 5 2 8 3 7 6 7 4 8 3 5 2 6 6 8 3 7 4 6 1 5 7 1 7 8 2 6 4 3 7 2 8 7 1 5 3 4 7 3 5 6 4 8 2 1 7 4 6 5 3 7 1 2 7 5 3 4 6 2 8 7 7 6 4 3 5 1 7 8 7 7 1 2 8 4 6 5 7 8 2 1 7 3 5 6 8 1 8 6 3 2 7 5 8 2 7 5 4 1 8 6 8 3 6 8 1 4 5 7 8 4 5 7 2 3 6 8 8 5 4 2 7 6 3 1 8 6 3 1 8 5 4 2 8 7 2 4 5 8 1 3 8 8 1 3 6 7 2 4
|
|
|
|
square
Свой человек
 
Offline
Сообщений: 333
СПАСИБО
-вы поблагодарили: 22
-вас поблагодарили: 14
|
 |
� Ответ #44 : Июнь 11, 2012, 12:04:14 � |
|
O!!! Спасибо. Буду думать. Вот, значит, для n=8 быстро получилось. А для n=10 тупит. А для n=9 что имеем? Для аналогии пригодится 
|
|
|
Записан
|
|
|
|
|