您的位置:首页 > 其它

全排列问题

2017-07-22 13:54 148 查看
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入

输入 n(1≤n≤9)

输出

由1~n组成的所有不重复的数字序列,每行一个序列。每个数字占5列。

样例输入

4

样例输出

    1    2    3    4

    1    2    4    3

    1    3    2    4

    1    3    4    2

    1    4    2    3

    1    4    3    2

    2    1    3    4

    2    1    4    3

    2    3    1    4

    2    3    4    1

    2    4    1    3

    2    1    4    3 

    3    1    2    4

    3    1    4    2

    3    2    1    4

    3    2    4    1

    3    4    1    2

    3    4    2    1

    4    1    2    3

    4    1    3    2

    4    2    1    3

    4    2    3    1

    4    3    1    2
    4    3    2    1

#include<iostream>
#include<iomanip>
using namespace std;
int a[9];
int b[9]={0};
int n;
int search(int step)
{
if(step==0)
{
int i;
for(i=0;i<n;i++)
{
cout<<setw(5)<<a[i];
}
cout<<endl;
return 0;
}
else
{
int i;
for(i=1;i<=n;i++)
{
if(b[i-1]==1)
continue;
b[i-1]=1;
a[n-step]=i;
search(step-1);
b[i-1]=0;
}
}
return 0;
}
int main()
{
cin>>n;
search(n);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: