我想创建一组字符串,下面是唯一的限制。相同的数字不应重复。
字符串范围1-8(12345678)或1-16(12345678910111213141516)
例如:(系列集)
12345678
12345687
12345876
12345867
...
...
87654321就像这样,有2^8(1-8)和2^16(1-16)的可能性。如何才能以更少的计算非常有效地生成这些字符串?
发布于 2012-06-05 02:00:51
你的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的答案应该为你做排列,但我认为你需要改变你的需求。
https://stackoverflow.com/questions/10884235
复制相似问题