标签:
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]
.
C++:
class Solution { public: vector<vector<int> > arr; void dfs(vector<int> &num, int i, int n) { int j, tmp; if(i == n) arr.push_back(num); for(j = i; j < n; j++) { tmp = num[i]; num[i] = num[j]; num[j] = tmp; //printf("pre:i:%d, j:%d\n", i, j); dfs(num, i + 1, n); //printf("after:i:%d, j:%d\n", i, j); tmp = num[i]; num[i] = num[j]; num[j] = tmp; } } vector<vector<int> > permute(vector<int> &num) { dfs(num, 0, num.size()); return arr; } };
#include<stdio.h> #include<stdlib.h> #define N 3 int arr[100][N]; static int index = 0; void outprint(int A[], int n) { int i; for(i = 0; i < n; i++) { arr[index][i] = A[i]; printf("%d ", arr[index][i]); } printf("\n"); } void dfs(int A[], int i, int n) { int j, tmp; if(i == n) outprint(A, n); for(j = i; j < n; j++) { tmp = A[i]; A[i] = A[j]; A[j] = tmp; //printf("pre:i:%d, j:%d\n", i, j); dfs(A, i + 1, n); //printf("after:i:%d, j:%d\n", i, j); tmp = A[i]; A[i] = A[j]; A[j] = tmp; } } void permute(int A[], int n) { dfs(A, 0, n); } void main() { int A[] = {1, 2, 3}; permute(A, 3); }
标签:
原文地址:http://blog.csdn.net/uj_mosquito/article/details/42915827