题目描述
小馨小诺还有小雪和小谢四个人去学校,路上他们走成了一排,爱思考的小馨提出了问题:我们四个人一排共有多少种站法?
数学比较好的小雪说这不是全排列吗,有4的阶乘种432*1=24种啊。
小馨说对,但是你用编程模拟一下。
小谢自信的回答道四层 f o r for for 循环然后去重即可。
小馨还是不太满意,要是有 n n n 个人呢?
输入格式
输入一个正整数 n n n( 2 2 2 ≤ \leq ≤ n n n ≤ \leq ≤ 10)。
输出格式
输出站法的种数(即 1 1 1 ∽ \backsim ∽ n n n 的全排列)。
样例输入
3
样例输出
123
132
213
231
312
321
#include <bits/stdc++.h>
using namespace std;
int n,sum=0;
int visit[101],a[101],u[101];
void dfs(int cur)
{
int i;
if(cur==n+1)
{
for(i=1;i<=n;i++)
{
cout<<visit[i];
}
cout<<endl;
return ;
}
for(i=1;i<=n;i++)
{
if(!u[i])
{
visit[cur]=i;
u[i]=1;
dfs(cur+1);
u[i]=0;
}
}
}
int main()
{
cin>>n;
dfs(1);
return 0;
}