假设我有一个包含n个元素的列表,我知道有n!种可能的方式来排列这些元素。如何生成此列表所有可能的排列?例如,我有列表[a, b, c]。该算法将返回[[a, b, c],[a, c, b],[b, a, c],[b, c, a],[c, a, b],[c, b, a]]。
我正在阅读这里:http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations,但维基百科从来没有擅长解释,我不太理解其中的大部分内容。
答案:可以使用递归算法来生成列表的所有排列。首先,选择一个元素作为第一个元素,并将其与列表中的其他元素交换。然后,对剩余的元素进行递归处理,直到只剩下一个元素时,生成一种排列。重复此过程,每次选择一个新的第一个元素。最终,将得到所有可能的排列组合。
我正在阅读这里:http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations,但维基百科从来没有擅长解释,我不太理解其中的大部分内容。
答案:可以使用递归算法来生成列表的所有排列。首先,选择一个元素作为第一个元素,并将其与列表中的其他元素交换。然后,对剩余的元素进行递归处理,直到只剩下一个元素时,生成一种排列。重复此过程,每次选择一个新的第一个元素。最终,将得到所有可能的排列组合。