【问题标题】:Algorithm to generate all combinations of a specific size from a single set [closed]从单个集合中生成特定大小的所有组合的算法[关闭]
【发布时间】:2015-11-08 17:33:00
【问题描述】:

我正在寻找 C# 中的解决方案,以在给定的字符或单词列表上生成组合,以对 zip 文件执行字典攻击。因为我们丢失了那些 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# 中重写它?
  • 我投票结束这个问题,因为提问者没有考虑这会产生的数据量。
  • 我不确定为什么这个问题被选为-1,但是当程序员想要实现他的解决方案时,他不应该考虑数据量。一个简单的例子,如果你被要求对已知密码列表的 zip 文件执行字典攻击,我们会做什么?如果您可以删除 -1 票,那将是很好的......谢谢。

标签: c# algorithm statistics combinations dictionary-attack


【解决方案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);
    }
}

Demo

如果您想稍后检索这些值,请将字符串存储在全局数组中,然后再从函数 foo() 返回。

【讨论】:

  • 感谢它完美运行。
  • 全局数组?静态变量?埃克
猜你喜欢
  • 2013-10-04
  • 2015-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多