Every day a leetcode
题目来源:46. 全排列
解法1:回溯算法

详情见于官方题解。
代码:
class Solution {
public:
void backtrack(vector<vector<int>>& ans, vector<int>& output, int first, int len){
// 所有数都填完了
if(first == len)
{
ans.emplace_back(output);
return;
}
for(int i=first;i<len;i++)
{
// 动态维护数组
swap(output[i],output[first]);
// 继续递归填下一个数
backtrack(ans,output,first+1,len);
// 撤销操作
swap(output[i],output[first]);
}
}
vector<vector<int>> permute(vector<int>& nums){
vector<vector<int> > ans;
backtrack(ans,nums,0,(int)nums.size());
return ans;
}
};
结果:

本文介绍了解决LeetCode上46.全排列问题的一种有效方法——回溯算法,并给出了详细的实现步骤与C++代码示例。
635

被折叠的 条评论
为什么被折叠?



