置换算法

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每个位置都去掉元素的递归结果。