大家好像都在转载这篇...写的不错
http://blog.csdn.net/tuantuanls/article/details/8717262
ps.
//这样写递归的话会清楚一些
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int>> result;
int N = num.size();
if(N==1)
{
result.push_back(num);
return result;
}
vector<vector<int>> post;
vector<int> cur;
vector<int> tmp;
for(int i=0;i<N;i++)
{
cur = num;
cur.erase(cur.begin()+i);
post = permute(cur);
add(num[i],result,post);
}
return result;
}
void add(int v, vector<vector<int>>& result, vector<vector<int>>& post){
for(int i=0;i<post.size();i++){
post[i].insert(post[i].begin(),v);
result.push_back(post[i]);
}
}
};