A为输入的一组数
used用来标记A中第i个数是否已经被用过
perm数组用来存放已经生成的排列
DFS(x,n)是新的排列第x位的数
int A[maxn];
bool used[maxn];
int perm[maxn];
bool f = false;
void dfs(int x,int n) {
if (x == n) {
for (int i = 0; i < n; i++) {
cout << perm[i];
}
cout << endl;
return;
}
for (int i = 0; i < n; i++) {
if (!used[i]) {
perm[x] = A[i];
used[i] = true;
dfs(x + 1, n);
used[i] = false;//dfs返回时,要将使used[i]复位
}
}
return;
}