## Saturday, December 29, 2012

### [LeetCode] Permutations 解题报告

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]`.
» Solve this problem

[解题思路]

[Code]
``````1:    vector<vector<int> > permute(vector<int> &num) {
2:      // Start typing your C/C++ solution below
3:      // DO NOT write int main() function
4:      vector<vector<int> > coll;
5:      vector<int> solution;
6:      if(num.size() ==0) return coll;
7:      vector<int> visited(num.size(), 0);
8:      GeneratePermute(num, 0, visited, solution, coll);
9:      return coll;
10:    }
11:    void GeneratePermute(vector<int> & num, int step, vector<int>& visited, vector<int>& solution, vector<vector<int> >& coll)
12:    {
13:      if(step == num.size())
14:      {
15:        coll.push_back(solution);
16:        return;
17:      }
18:      for(int i =0; i< num.size(); i++)
19:      {
20:        if(visited[i] == 0)
21:        {
22:          visited[i] = 1;
23:          solution.push_back(num[i]);
24:          GeneratePermute(num, step+1, visited, solution, coll);
25:          solution.pop_back();
26:          visited[i] =0;
27:        }
28:      }
29:    }
``````