Алгоритм генерации всех комбинаций определенного размера из одного набора
Я ищу решение в 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()
,