Given a collection of numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].
Reference: http://exceptional-code.blogspot.com/2012/09/generating-all-permutations.html
http://blog.youkuaiyun.com/custqi/article/details/6455686
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > result;
dfs(result,num,0);
return result;
}
void dfs(vector<vector<int> > &result, vector<int> &num, int depth)
{
if(depth==num.size())
{
result.push_back(num);
}
for(int i=depth;i<num.size();i++)
{
swap(num[i],num[depth]);//DFS is implemented in another way here.
dfs(result,num,depth+1);
swap(num[i],num[depth]);
}
}
};
本文介绍了一种使用深度优先搜索(DFS)策略生成整数数组所有可能排列的方法。通过递归交换数组元素的位置来穷举所有可能性,最终得到全部的排列组合。
6246

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



