最近遇到一个加密是对方后台服务加的,而且确定某些参数范围,想了下为何不做个排列组合尝试破一下,好了直接进入主题。
假定 a,b,c 三个字符串则存在,a,ab,ac,abc,acb,b,ba,bc,bac,bca,c,ca,cb,cab,cba 等排列组合,怎么去实现呢。
看代码
public static void listAll(List<string> candidate, string prefix)
{
Console.WriteLine(prefix);
for (int i = 0; i < candidate.Count(); i++)
{
List<string> tmp = new List<string>(candidate);
string text = tmp[i];
tmp.Remove(text);
listAll(tmp, prefix + text);
}
}
static void Main(string[] args)
{
List<string> array = new List<string> { "a", "b", "c" };
listAll(array, "");
}
好了可以去见证奇迹了。