创建序列集(12345678)

时间:2012-06-04 15:54:07

标签: c#

我想创建一组字符串,下面是唯一的限制。 相同的数字不应重复。

字符串范围1-8(12345678)或1-16(12345678910111213141516)
例如:(系列集)

12345678
12345687
12345876
12345867
...
...
87654321

就像那样2 ^ 8(1-8)和2 ^ 16(1-16)的可能性。 如何以更少的计算高效地生成这些字符串?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你的8个案例是可能的,但之后你将很快耗尽空间。

这不是您认为的2^n案例 - 它是n!案例。

对于8,将有40,320个排列。

permute(k,n) = k! / (n-k)!
permute(8,8) = 8! / (8-8)! = 8! = 40320

对于16,将有20,922,789,888,000个排列。在16字节/排列时,您需要大约304TB来存储它们。

@ kol的答案应该为你做排列,但我认为你需要改变你的要求。