全排列问题

来源:互联网 发布:苹果8没网络 编辑:程序博客网 时间:2024/05/22 05:28
输出自然数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;}


原创粉丝点击