0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 16

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

13.05.2013, 08:48. Показов 9496. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru