MXM
написал 18 марта 2006 года в 05:57 (750 просмотров)
Ведет себя
как мужчина; открыл 1 тему в форуме, оставил 1 комментарий на сайте.
Приветствую всех!
у меня есть проблема в создании алгоритма.
кто может мне помочь с какой задачкой?!
дан массив А[n] = { x[1],x[2],..x..,x[n] },
где X[1] — 1-й элемент в массиве,
X — i-й элемент в массиве,
…………………………………..
n — кол-во натур. чисел.
нужно составить алгоритм , который бы
перемешивал все i в массиве.
причем каждая новая комбинация не повторялась.
откликнитесь кто лучше меня разбирается в комбинаторике.
мне нужен только принцып перетасовки.
спасибо за ранее!!!
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Не очень понятно, тебе нужно на выходе все N! (N факториал) возможных перестановок N элементов, или ты хочешь просто «перетасовать колоду» один раз? Второй вариант имеет большее отношение к генерации случайных чисел, чем к комбинаторике. Скажем, возьми простое число K меньшее N, на которое N НЕ делится. Потом бери
for(i=1;i
i*K (mod N) + 1
Получишь N разных чисел от 1 до N. Это и есть твоя перетасовка колоды.
Например, если у тебя 12 чисел, от 1 до 12
1 2 3 4 5 6 7 8 9 10 11 12
т.е. N = 12, и ты возьмешь K = 7, то перетасованный массив будет
8 3 10 5 12 7 2 9 4 11 6 1
Это — то, что ты хочешь?
Good Luck,
UT
привет !!!
спасибо что ответил .
мне нужно написать функцию которая выдает все варианты (N!)перестановки.
мне бы принцып перестановки .
Читай Кнута, у него в первом томе есть.
можно, например, написать рекурсивную функцию, которая будет перебирать перестановки массива длины size, выставляя первым элементом массива, последовательно первый элемент, второй, и тд, и вызывая рекурсивно себя на массив без первого элемента.
То есть, примерно так:
тут надо как-то приделать вывод получающихся перестановок. куда — не знаю, но можно. ;)