Алгоритм генерации всех комбинаций определенного размера из одного набора

Я ищу решение в C# для создания комбинаций по заданному списку символов или слова для выполнения словарной атаки на ZIP-файлы. потому что мы потеряли файл паролей для этих почтовых индексов. Преимущество в том, что мы знаем возможные слова об этом. Словарь должен содержать все комбинации слов, которые я выберу. И все символы / слова только в маленьком регистре.

Пример: допустим, у нас есть набор символов:

Set A = {A,B,C}

A,B,C   =3

AA,AB,AC

BA,BB,BC

CA,CB,CC    =9


AAA,AAB,AAC,ABA,ABB,ABC,ACA,ACB,ACC

BAA,BAB,BAC,BBA,BBB,BBC,BCA,BCB,BCC

CAA,CAB,CAC,CBA,CBB,CBC,CCA,CCB,CCA    = 27


TOTAL POSIBLE COMBINATION 39

из списка слов одно слово / символ может повторяться максимум 4 раза. Если есть такая логика / логика, пожалуйста, предложите.

1 ответ

Вот реализация C# с использованием рекурсии:

static char[] A={'a','b','c'};
static int N = 3;
static void foo(string s)
{
    if (s.Length == N)
    {
        Console.WriteLine(s);
        return;
    }
    for (int i = 0; i < A.Length; i++)
    {
        string t = s;
        t += A[i];
        foo(t);
    }
}

демонстрация

Если вы хотите получить значения позже, сохраните строки в глобальном массиве, прежде чем вернуться из функции foo(),

Другие вопросы по тегам