题目:
给出一个整数 n 输出 1 ~ n 的全排列。
关键点:
进行DFS。注意:顺序、恢复现场、剪枝。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 10;
int res[N],st[N],n;
void dfs(int h)
{
if(h == n){
for(int i = 0;i < n;i++) cout << res[i] << ' ';
cout << endl;
return;
}
for(int i = 1;i <= n;i++)
{
if(st[i] == false){
res[h] = i;
st[i] = true;
dfs(h+1);
st[i] = false;
}
}
}
int main()
{
cin >> n;
dfs(0);
return 0;
}
笔记: