给定一个不含重复数字的数组 nums,输出其所有可能的全排列。
输入描述
第一行输入一个整数 n。
第二行输入 n 个整数,表示数组 nums。
输出描述
输出所有全排列,每个排列占一行,数字之间用空格分隔。
示例 1
输入
text
3
1 2 3
输出
text
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
C++ 解法
cpp
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> nums;
vector<int> path;
vector<bool> used;
void dfs() {
if ((int)path.size() == n) {
for (int i = 0; i < n; i++) {
if (i) cout << " ";
cout << path[i];
}
cout << endl;
return;
}
for (int i = 0; i < n; i++) {
if (used[i]) continue;
used[i] = true;
path.push_back(nums[i]);
dfs();
path.pop_back();
used[i] = false;
}
}
int main() {
cin >> n;
nums.resize(n);
for (int i = 0; i < n; i++) cin >> nums[i];
used.assign(n, false);
dfs();
return 0;
}