本文共 1969 字,大约阅读时间需要 6 分钟。
class Solution {//DFSpublic: vector> permute(vector &num) { // Start typing your C/C++ solution below // DO NOT write int main() function int n = num.size(); if(0 == n) return vector >(); sort(num.begin(), num.end()); vector used(num.size(), false); vector > ans; vector path; permute_aux(n, used, path, ans, num); return ans; } void permute_aux( int n, vector & used, vector & path, vector >& ans, const vector & num ) { //throw std::exception("The method or operation is not implemented."); if(0 == n) { ans.push_back(path); return; } for (int i = 0; i < used.size(); ++i) { if(false == used[i]) { used[i] = true; path.push_back(num[i]); permute_aux(n-1, used, path, ans, num); used[i] = false; path.pop_back(); } } }};
second time
class Solution {public: void permuteUtil(vector & num, vector& used, vector & path, vector >& allPath) { if(path.size() == num.size()) { allPath.push_back(path); return ; } for(int i = 0; i < num.size(); ++i) { if(!used[i]) { used[i] = true; path.push_back(num[i]); permuteUtil(num, used, path, allPath); path.pop_back(); used[i] = false; } } } vector > permute(vector &num) { // Start typing your C/C++ solution below // DO NOT write int main() function vector > allPath; vector path; vector used(num.size(), false); permuteUtil(num, used, path, allPath); return allPath; }};
转载地址:http://vmxti.baihongyu.com/