這是學習dfs,借鑑別人的代碼,留着以後方便複習…
給定一個數,輸出一個數的全排列。
基礎的dfs題,做好標記,記錄好數字,每當x=n時輸出一次就好。
例:
2
1 2
2 1
#include<stdio.h>
#include<cstring>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int n;
int vis[100000];
int a[100000];
void dfs(int x)
{
if(x==n)
{
printf("%d",a[0]);
for(int i=1;i<n;i++)
printf(" %d",a[i]);
printf("\n");
}
else
{
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
vis[i]=1;
a[x]=i;
dfs(x+1);
vis[i]=0;
}
}
}
}
int main()
{
scanf("%d",&n);
memset(vis,0,sizeof(vis));
dfs(0);
}