Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
.NET 4.x

Написать программу на генерацию и вывод перестановок с повторениями и без

21.12.2011, 16:05. Показов 2980. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать программу на генерацию и вывод перестановок с без повторения и повторениями.
Допустим я ввожу цифру 3 она выводит
Без повторений
123
132
231
213
313
321
с повторениями если не ошибаюсь
111
112
113
...
...
333
Написал такой код на перестановку без повторений но что то не так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void perestanovk(int k, int[] a)
        {
            if (k < 0)
                textBox2.Text += "\r\n" + a;
            else
            {
                for (int i = 0; i < k; i++)
                {
                    int z = a[i];
                    a[i] = a[k];
                    a[k] = z;
                    perestanovk(k, a);
                    z = a[i];
                    a[i] = a[k];
                    a[k] = z;
                }
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2011, 16:05
Ответы с готовыми решениями:

Перечисление перестановок с повторениями
Помогите исправить ошибку. У меня проблема в том, что повторяются комбинации несколько раз. Вот сама программа: Sub ыыфа() Dim A(10,...

Все варианты перестановок символов в строке с повторениями
Нужно получить все варианты перестановок символов в строке &quot;0123&quot; с повторениями символов. Пока что имею вот такой код, но он находит...

Произвести генерацию - сочетаний, размещений и перестановок (из M по N) вручную
Я студент. Я выполнил три лабораторные. Генерацию перестановок. Генерацию сочетаний. Генерацию размещений. Но для защиты преподаватель...

3
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
22.12.2011, 18:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
       string fun_rec(int N, int l, int[] A)
        {
            string ret = "";
            if (l == N-1)
            {
                for (int i = 0; i < N; i++) ret += A[i].ToString();
                ret += "\n";
                return ret;
            }
            int x = A[l];
            ret += fun_rec(N, l + 1, A);
            for (int i = l + 1; i < N; i++)
            {
                A[l] = A[i];
                A[i] = x;
                ret += fun_rec(N, l + 1, A);
                A[i] = A[l];
                A[l] = x;
            }
            return ret;
        }
        string fun_rec_init(int N)
        {
            int[] A = new int[N];
            for (int i = 0; i < N; i++) A[i] = i + 1;
            return fun_rec(N,0,A); 
        }
 
 
...............
richTextBox1.Text = fun_rec_init(5);
...............
1
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
23.12.2011, 01:52  [ТС]
Не совсем понял идею не помешали бы комментарии
Нам как то по другому объясняли но лекций норм нету ...
0
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
23.12.2011, 04:21
Цитата Сообщение от Kill100 Посмотреть сообщение
Не совсем понял идею не помешали бы комментарии
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
       string fun_rec(int N, int l, int[] A)
        {
            string ret = "";
            // если глубина рекурсии достигла предела, то возвращаем текущую комбинацию чисел в строку
            if (l == N-1)
            {
                for (int i = 0; i < N; i++) ret += A[i].ToString();
                ret += "\n";
                return ret;
            }
            int x = A[l];
// вызов функции для следующего элемента. Этой строки могло бы и не быть, если в цикле ниже поставить int i = l вместо int i = l + 1. Но так корректнее =)))
            ret += fun_rec(N, l + 1, A);
 
            // вызываем по очереди перестановку текущего элемента(номер l) со всеми остальными и вызываем функцию для следующего элемента
            for (int i = l + 1; i < N; i++)
            {
                A[l] = A[i];
                A[i] = x;
                ret += fun_rec(N, l + 1, A);
                A[i] = A[l];
                A[l] = x;
            }
            return ret;
        }
        // инициализируем рек. ф-цию
        string fun_rec_init(int N)
        {
            // создаем массив неповторяющихся элементов
            int[] A = new int[N];
            for (int i = 0; i < N; i++) A[i] = i + 1;
 
            return fun_rec(N,0,A); 
        }
Вообще, рекурсию сложно объяснять, она часто немного неочевидна

Добавлено через 45 минут
Цитата Сообщение от Kill100 Посмотреть сообщение
Нам как то по другому объясняли
Можно и по другому =)) С повторениями и без. Правда, в случае без следующий вариант нерационален
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        string fun(int N, bool p)
        {
            int[] arr = new int[N + 1];
            for (int i = 0; i <= N; i++) arr[i] = 1;
            bool[] b = new bool[N + 2];
            string ret = "";
            while (arr[N] == 1)
            {
                int i = 0;
                if (!p)
                {
                    for (i = 1; i <= N; i++) b[i] = false;
                    for (i = 0; i < N; i++)
                        if (b[arr[i]]) i = N + 100;
                        else b[arr[i]] = true;
                }
                if (i <= N)
                {
                    for (i = 0; i < N; i++) ret += arr[i].ToString();
                    ret += "\n";
                }
                arr[0]++;
                i = 0;
                while (arr[i] == N + 1)
                {
                    arr[i] = 1;
                    arr[++i]++;
                }
            }
            return ret;
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2011, 04:21
Помогаю со студенческими работами здесь

Есть ли в java стандартное средство подсчета перестановок с повторениями?
Добрый день. Есть массив содержащий последовательность чисел, которые могут повторяться, мне надо найти число возможных перестановок этой...

Вывод всех перестановок без использования массивов
Вот есть такая проблема: нужно вывести все возможные перестановки чисел от 1 до n тема жутко заезженная, есть рекурсивные подходы, есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru