提问人:Beomond 提问时间:7/19/2020 最后编辑:amitBeomond 更新时间:7/19/2020 访问量:58
返回重新排列数组的所有可能性的函数
Function that returns all possibilities of rearranging of an array
问:
我是一个新手程序员,我实际上正在做一些编程挑战。这是我的问题:
如何创建一个返回数组所有重新排列可能性的函数?
示例(在伪代码中):
Array = ["aba", "bbb", "bab"] //this array have 6 possible arrangements
function arrayRearangement(Array) {
//receive the array and return all array arrangement possibilities (6)
}
arrayRearrangement(Array) = [["aba", "bbb", "bab"],
["aba", "bab", "bbb"],
["bbb", "aba", "bab"],
["bbb", "bab", "aba"],
["bab", "bbb", "aba"],
["bab", "aba", "bbb"]]
如果可能的话,请给我伪代码的解决方案(我更喜欢自己实现)。
但它可以用你最喜欢的编程语言编写。
Obs.:很抱歉有任何可能的英语错误,或者如果这个话题被重复,我被搜索了很多,没有找到任何东西
答:
0赞
amit
7/19/2020
#1
您可能想了解更多关于回溯的信息,以便实现它。
在回溯中,您可以使用递归来检查问题的所有可能解决方案。
在您的案例中(伪代码):
GetAllPermutations(elements):
result = []
GetAllPermutations(set(elements), [], result)
return result
GetAllPermutations(elements, so_far, result):
if elements.empty():
result.add(so_far)
return
for x in elements:
elements.remove(x) // Note while implementing: this is problematic since modifying while iterating, there are ways to overcome it
so_far.append(x)
// This is the recursive call, which "assumes" x is set and checks all possible other solutions
GetAllPermutations(elements, so_far, result)
// set back the state for next iterations where x is viable selection
so_far.remove_last()
elements.add(x)
评论