洛谷-P1706 全排列问题
题目描述
输出自然数 (1) 到 (n) 所有不重复的排列,即 (n) 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入格式
一个整数 (n)。
输出格式
由 (1 sim n) 组成的所有不重复的数字序列,每行一个序列。
每个数字保留 (5) 个场宽。
输入输出样例
输入 #1
3
输出 #1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
说明/提示
1≤n≤9
C++代码
#include <iostream>
#include <iomanip>
using namespace std;
int n, a[10], b[10];
void dfs(int k) {
if (k > n) {
for (int i=1; i<=n; ++i)
cout << setw(5) << a[i];
cout << endl;
return ;
}
for (int i=1; i<=n; ++i) {
if (b[i] == 1)
continue;
a[k] = i;
b[i] = 1;
dfs(k+1);
b[i] = 0;
}
}
int main() {
cin >> n;
dfs(1);
return 0;
}