3

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

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

12345678
12345687
12345876
12345867
...
...
87654321

就像存在 2^8(1-8) 和 2^16(1-16) 的可能性一样。我怎样才能以更少的计算非常有效地生成这些字符串?

4

2 回答 2

2

据我了解,您需要生成给定符号集的所有排列(在您的情况下为数字)

于 2012-06-04T16:03:22.063 回答
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 的答案应该为你做排列,但我认为你需要改变你的要求。

于 2012-06-04T18:00:51.207 回答