经典的递归法

#include <vector>
class Solution {
  public:
    vector<vector<int> > permute(vector<int>& num) {
        vector<vector<int>> res, vvnum;
        vector<int> tmp;
        if (num.empty()) {
            return res;
        }
        if (num.size() == 1) {
            res.push_back(num);
        } else {
            for (int i = 0; i < num.size(); i++) {
                tmp = num;
                tmp.erase(tmp.begin() + i);
                vvnum = permute(tmp);
                for (int j = 0; j < vvnum.size(); j++) {
                    vvnum[j].insert(vvnum[j].begin(), num[i]);
                    res.push_back(vvnum[j]);
                }
            }
        }

        return res;
    }
};