Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 16

Алгоритм перебора с повторениями

13.05.2013, 08:48. Показов 9460. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите написать код перебора вариантов) нашел ссылки Перебор всех возможных сочетаний из множества. Требуется перебраться, допустим все варианты числа 123, то есть получается 132, 312, 321, 231, 213, 123
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2013, 08:48
Ответы с готовыми решениями:

Перевод с C++. Алгоритм генерирующий все подмножества с повторениями
это нерекурсивный алгоритм генерирующий все подмножества с повторениями #include <iostream> #include <clocale> using...

Алгоритм перебора вариантов
Кто нибудь может подсказать эффективный алгоритм без рекурсии желательно: на входе есть массив массива, нужно получить все возможные...

Алгоритм генерации всех подмножеств с повторениями
Реализовать не рекурсивную версию алгоритма, генерирующего все подмножества с повторениями я правильно понимаю использование подобного...

7
44 / 44 / 6
Регистрация: 16.11.2010
Сообщений: 110
13.05.2013, 08:54
C#
1
2
3
4
5
6
7
8
9
for(int i  = 0;i<s.Length;i++)
    for(int j = 0; j<s.Length;j++)
        {
              string buf_s = s;
              char buf = s[j];
              buf_s = s.replace(s[i],s[j]);
              buf_s[i] = buf;
              Console.WirteLine(buf_s);
         }
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
13.05.2013, 09:23
Здесь то же самое обсуждалось.
0
Заблокирован
13.05.2013, 11:42
Совсем недавно товарищ Psilon ( простите если ошибся ), привел хорошее решение, сейчас попытаюсь найти.
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
13.05.2013, 11:47
лексекографический порядок это раз:
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
static public bool next_permutation(int[] perm)
{
    int n = perm.Length;
    int k = -1;
    for (int i = 1; i < n; i++)
        if (perm[i - 1] < perm[i])
            k = i - 1;
    if (k == -1)
    {
        for (int i = 0; i < n; i++)
            perm[i] = i;
        return false;
    }
 
    int l = k + 1;
    for (int i = l; i < n; i++)
        if (perm[k] < perm[i])
            l = i;
 
    int t = perm[k];
    perm[k] = perm[l];
    perm[l] = t;
 
    Array.Reverse(perm, k + 1, perm.Length - (k + 1));
 
    return true;
}
Добавлено через 3 минуты
код грея для перестановок скину позже.
0
13.05.2013, 11:53

Не по теме:

Надоело искать, если кому то интересно можете продолжить https://www.cyberforum.ru/sear... 30&page=11

0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
13.05.2013, 12:31
вот генерация всех перестановок двумя способами:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System;
using System.Collections.Generic;
 
namespace Problem
{
    class Program
    {
        static void Main()
        {
            int[] perm = {1, 2, 3};
            do { Console.WriteLine(string.Join(" ", perm)); } while (NextPermutation(perm)); //лексикографический перебор
 
            Console.WriteLine("************");
            
            int[] perm2 = {1, 2, 3};
            Console.WriteLine(string.Join(" ", perm2));
            foreach (var p in Permutation(3)) //код Грэя
            {
                for (int i = 0; i < perm2.Length; ++i)
                {
                    Console.Write("{0} ", perm2[p[i]]);
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
 
        static public bool NextPermutation(int[] perm)
        {
            int n = perm.Length;
            int k = -1;
            for (int i = 1; i < n; i++)
                if (perm[i - 1] < perm[i])
                    k = i - 1;
            if (k == -1)
            {
                for (int i = 0; i < n; i++)
                    perm[i] = i;
                return false;
            }
 
            int l = k + 1;
            for (int i = l; i < n; i++)
                if (perm[k] < perm[i])
                    l = i;
 
            int t = perm[k];
            perm[k] = perm[l];
            perm[l] = t;
 
            Array.Reverse(perm, k + 1, perm.Length - (k + 1));
 
            return true;
        }
 
        static IEnumerable<int[]> Permutation(int k)
        {
            int[] a = new int[k + 1];
            int[] c = new int[k + 1];
            int[] o = new int[k + 1];
            for (int i = 0; i < o.Length; ++i)
            {
                a[i] = i - 1;
                c[i] = 0;
                o[i] = 1;
            }
            for (int j = k, s = 0; j != 1; )
            {
                int q = c[j] + o[j];
                if (q >= 0 && q != j)
                {
                    int i1 = j - c[j] + s;
                    int i2 = j - q + s;
                    Swap(ref a[i1], ref a[i2]);
                    c[j] = q;
                    int[] t = new int[a.Length - 1];
                    Array.Copy(a, 1, t, 0, t.Length);
                    yield return t;
                    j = k;
                    s = 0;
                    continue;
                }
                if(q >=0)
                    ++s;
                o[j] = -o[j];
                --j;
            }
        }
 
        private static void Swap(ref int a, ref int b)
        {
            int t = a;
            a = b;
            b = t;
        }
    }
}
Добавлено через 10 минут
Цитата Сообщение от ferron Посмотреть сообщение
132, 312, 321, 231, 213, 123
это и есть код грэя для перестановки.

Добавлено через 1 минуту
а вот ссылка по теме:
http://neerc.ifmo.ru/wiki/inde... 0%BE%D0%BA
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.05.2013, 12:37
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
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main()
        {
            var d = GetDigits(3);
            foreach (string s in d)
                Console.WriteLine(s);
            Console.ReadKey();
        }
 
        private const int Mindigit = 0, Maxdigit = 9;
 
        static IEnumerable<string> GetDigits(int length)
        {
            if (length <= 0)
                throw new ArgumentException("Negative length", "length");
            if (length == 1)
            {
                for (int i = Mindigit; i <= Maxdigit; i++)
                    yield return i.ToString();
                yield break;
            }
            for (int i = Mindigit; i <= Maxdigit; i++)
                foreach (string s in GetDigits(length - 1))
                    yield return i + s;
        }
    }
}
меняем mindigit и maxdigit - получаем различные возможные комбианции. от 0 до 9 - всевозможные комбинации, от 1 до 3 - всевозможные комбинации 1,2 и 3
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2013, 12:37
Помогаю со студенческими работами здесь

Регулярное выражение (и алгоритм) текст с повторениями
Вопрос по регулярному выражению, (не умею я их делать ((( ) но может заодно подскажете простой алгоритм, а то я без костылей что то не...

Алгоритм перебора
Помогите с алгоритмом перебора... Две отрезка целочисленной длины m и n лежат в поле s... Не соприкасаются... Вот иллюстрация m=2 n=4...

Алгоритм перебора
Появилась необходимость в написание алгоритма который бы из массива: {&quot;_хочу-&quot;, &quot;_знать-&quot;, &quot;_алгоритмы-&quot;} ...

Алгоритм перебора
Подскажите, как реализовать функцию, выводящую на экран перебор числа от 1 до n. За меня делать не нужно, просто наставьте на путь...

Алгоритм перебора
Дано n требований(например 3), требуется перебрать варианты все возможных перестановок(например , и т.д.), для таких перестановок...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru