从单个集合生成特定大小的所有组合的算法
本文关键字:算法 组合 集合 单个 | 更新日期: 2023-09-27 18:08:01
我正在寻找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次。如果有这样的算法/逻辑,请建议。
下面是使用递归的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()
返回之前将字符串存储在全局数组中。