深度优先遍历求全排列用到了回溯的方法,先深搜,搜到结果后回溯。
#include<stdio.h>
#include<iostream>
using namespace std;
int ans;
int num[20];
int visited[20];
void solve(int a[])
{
for(int i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void dfs(int index,int b[])
{
if(index==5)
{
ans++;
solve(b);
return;
}
for(int i=1;i<=5;i++)
{
if(!visited[i])
{
visited[i]=true;
num[index]=i;
dfs(index+1,b);
visited[i]=false;
}
}
}
int main()
{
dfs(0,num);
cout<<ans<<endl;
return 0;
}