深度优先搜索(练手)
练手题:全排列
题目:
输入n,输出1,2,…,n的全排列(n<=8)。
输入:
数字n
输出:
1,2,…,n的全排列(n<=8)。
输入样例:
3
输出样例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
完整代码:
#include<iostream>
using namespace std;
int n,a[9];
bool vis[9];
void search(int d){
int i;
if (d>n){ //输出结果
for(i=1; i<n; i++) cout<<a[i]<<' ';
cout<<a[n]<<endl;
return;
}
for(i=1;i<=n;i++)//枚举d位的数字
if (!vis[i]){//是否使用过
a[d]=i; //记录
vis[i]=true;//设置已使用
search(d+1); //下一位
vis[i]=false; //恢复状态
}
return ;
}
int main(){
cin>>n;
for(int i=1;i<=n; i++)//全部没用过
vis[i]=false;
search(1);
return 0;
}