我有10个用户:
id type
------------
1 SP
2 KP
3 SP
4 LN
5 KP
6 KP
7 LN
8 SP
9 LN
10 SP
我需要生成5个用户的所有可能组合,但有一些限制:
1. exactly 2 users with type SP
2. exactly 2 users with type KP
3. exactly 1 user with type LN
4. No user can appear more than once in a given combination
例如,使用这些ID和类型,输出必须如下:
1 3 2 5 4
1 3 2 5 7
1 3 2 5 9
1 3 2 6 4
....
如何生成这些组合?
答案 0 :(得分:0)
只有10个用户,其中一个子集的所有可能选择都是2 ^ 10,这是非常小的数字 - 1024.因此,您可以简单地生成所有子集(我会使用位掩码)并且对于每个子集检查是否全部以下是:
使用这种方法,您将按照10k操作的顺序执行,这在现代计算机上将非常快速地完成。使用这种方法,易于编码并且没有太多错误的地方。