#include <algorithm> #include <deque> #include <iostream> using namespace std; deque<int> di; int N; void print(deque<int> vi) { for(int i = 0; i < vi.size(); i++) { cout<<vi[i]; } cout<<endl; } void perm(deque<int> vi, int n) { if(N-1 == n) { print(vi); } else { int num = di[n+1]; deque<int> vtmp; for(int i = 0; i <=n; i++) { vtmp.push_back(vi[i]); } for(int i = 0; i <= vtmp.size(); i++) { vtmp.insert(vtmp.begin() + i, num); perm(vtmp, n+1); vtmp.erase(vtmp.begin() + i); } } } void main() { int a[] = {1, 2, 3, 4}; N = sizeof(a) / sizeof(int); for(int i = 0; i < N; i++) { di.push_back(a[i]); } perm(di, 0); }