置换算法
Permutation algorithm
我有一个名为 H1 的 Hashmap。
H1 有 n 个 Hashmap 键。
对于 H1 hashmap,程序将创建幂集 {1,2,3,4,...n} 的所有排列。
换句话说,如果 n = 5,则 1,2,3,..5555 中的任何数字都是 H1 的有效列表。
所以如果,
Key 1 = 22
Key 2 = 50
Key 3 = 12
Key 4 = 44
Key 5 = 55
For 111 = {22,22,22}, for 213 = {50,22,12} for 12345 = {22,50, 12, 44,
55}.
我基本上需要找到所有可能组合的所有列表,按每个顺序(即:1342 != 3142)。
我有一个可能的解决方案,但我发现它根本不是最优的,它涉及将 int 值转换为字符串并查看字符串中的每个字符元素,我想看看是否有人知道更有效的方法方式。
Algorithm to generate all possible permutations of a list?
这是一个复杂的算法,你想怎么弄就怎么弄,我认为递归是最有趣的方式。
递归的方式基本上是去掉一个元素,在缩短后的链表上调用递归,然后returns每个位置都去掉元素的递归结果。
我有一个名为 H1 的 Hashmap。
H1 有 n 个 Hashmap 键。
对于 H1 hashmap,程序将创建幂集 {1,2,3,4,...n} 的所有排列。
换句话说,如果 n = 5,则 1,2,3,..5555 中的任何数字都是 H1 的有效列表。
所以如果,
Key 1 = 22
Key 2 = 50
Key 3 = 12
Key 4 = 44
Key 5 = 55
For 111 = {22,22,22}, for 213 = {50,22,12} for 12345 = {22,50, 12, 44, 55}.
我基本上需要找到所有可能组合的所有列表,按每个顺序(即:1342 != 3142)。
我有一个可能的解决方案,但我发现它根本不是最优的,它涉及将 int 值转换为字符串并查看字符串中的每个字符元素,我想看看是否有人知道更有效的方法方式。
Algorithm to generate all possible permutations of a list?
这是一个复杂的算法,你想怎么弄就怎么弄,我认为递归是最有趣的方式。
递归的方式基本上是去掉一个元素,在缩短后的链表上调用递归,然后returns每个位置都去掉元素的递归结果。