【题目描述】
输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入
n(1≤n≤9)
输出
由 1~n 组成的所有不重复的数字序列,每行一个序列。用setw(5) 控制字符间距
样例
【输入】
3
【输出】
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
【参考代码】
#include<bits/stdc++.h>
using namespace std;
int n,a[10],b[10];
void f(int k)
{
if(k==n+1)
{
for(int i=1; i<=n; i++)
cout<<setw(5)<<a[i];
cout<<endl;
return ;
}
int m;
for(int i=1; i<=n; i++)
{
if(b[i]==0)
{
b[i]=1;
a[k]=i;
m=k;
f(++m);
a[k]=0;
b[i]=0;
}
}
}
int main()
{
cin>>n;
f(1);
return 0;
}
1521

被折叠的 条评论
为什么被折叠?



