我被分配了编写一个 C++ 函数的任务,该函数返回 一组整数的所有可能排列。我做了一些研究,但我发现的所有算法都显示了正在打印的排列。
我遇到的问题是我不知道如何设置函数,具体来说,我应该如何处理从递归调用接收数据。我的第一个猜测是使用链表,但我知道如果我尝试返回一个指向节点的指针,我最终会得到一个指向无效内存的指针。
我的另一个猜测是使用某种全局 vector 链表,但我无法想象如何从函数本身添加到链表。此外,这是在回避问题而不是实际解决问题,如果可能的话,我想实际解决它。
由于这是一道家庭作业题,我不希望有人直接给我答案。我只是迷路了,非常感谢有人为我指明正确的方向。
最佳答案
你可以使用 std::next_permutation
.它对数据结构进行操作,因此您可以在每次迭代后对数据结构做任何您想做的事情。
如果您正在实现自己的排列逻辑,假设您正在对 vector<int>& data
进行操作,您可以添加一个参数,例如 vector<vector<int> >& result
在你的递归函数中。每次生成排列时,您可以简单地执行 result.push_back(data)
.
关于C++递归地生成集合的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065082/