我想创建一组字符串,下面是唯一的限制。 相同的数字不应重复。
字符串范围1-8(12345678)或1-16(12345678910111213141516)
例如:(系列集)
12345678
12345687
12345876
12345867
...
...
87654321
就像那样2 ^ 8(1-8)和2 ^ 16(1-16)的可能性。 如何以更少的计算高效地生成这些字符串?
答案 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的答案应该为你做排列,但我认为你需要改变你的要求。