输入N 计算1-N之间的全排列
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 a[100]={0};
int used[100]={0};
int count=0,N=0;
void print()
{
for(int i=1;i<=N;i++)
cout<<a[i]<<" ";
cout<<endl;
count++;
}
void dfs(int i)
{
if(i>N) //出口
print();
else
{
for(int k=1;k<=N;k++)
{
if(used[k]==0)
{
used[k]=1;
a[i]=k;
dfs(i+1);
used[k]=0; //每次回溯
}
}
}
}
int main()
{
cin>>N;
dfs(1);
cout<<count<<endl;
return 0;
}