zoukankan      html  css  js  c++  java
  • 递归实现排列型枚举

    题目描述

    把 1~n 这 n(n<10) 个整数排成一行后随机打乱顺序,输出所有可能的次序。

    输入

    一个整数n。

    输出

    按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

    样例输入

    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;
    #define ll long long
    int a[20];
    void print(int n,int ans)
    {
        int i,j,k;
        if(ans==n)
        {
            for(i=0; i<n-1; i++)
                printf("%d ",a[i]);
            printf("%d
    ",a[n-1]);
            return;
        }
        else
            for(i=1; i<=n; i++)
            {
                k=1;
                for(j=0; j<ans; j++)
                    if(a[j]==i)
                        k=0;
                if(k)
                {
                    a[ans]=i;
                    print(n,ans+1);
                }
            }
    }
    int main()
    {
        memset(a,0,sizeof(a));
        int i,j,k,n;
        scanf("%d",&n);
        print(n,0);
        return 0;
    }
    View Code
  • 相关阅读:
    py 5.11
    py 5.10
    py 5.9
    py 5.8
    python 5.7
    python 5.4
    python 5.3
    python 5.2
    python 4.28
    python 4.27
  • 原文地址:https://www.cnblogs.com/nublity/p/9291897.html
Copyright © 2011-2022 走看看