• YTU 2845: 编程题AB-卡片游戏


    2845: 编程题AB-卡片游戏

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 30  解决: 13

    题目描述

    小明对数字的序列产生了兴趣:
    现有许多张不同的数字卡片,用这若干张卡片能排列出很多序列,要求算出这若干张不同卡片的全排列总数,并按从小到大的顺序输出这些序列。

    输入

    输入数字n,表示输入数字序列个数,接着输入n个不同的数字,代表n张卡片上的数字(0<=数字<=9,1<=n<=6)。

    输出

    对每组卡片按从小到大的顺序输出所有能由这几张卡片组成的序列,每个序列占一行,序列中数字用空格分隔。

    样例输入

    3
    1 4 2

    样例输出

    6
    1 2 4
    1 4 2
    2 1 4
    2 4 1
    4 1 2
    4 2 1

    你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

    #include <stdio.h>
    #include <string.h>
    int a[12],b[12],c[12],n;
    void dfs(int step)
    {
        int i;
        if(step==n+1)
        {
            for(i=1; i<=n; i++)printf(i!=n?"%d ":"%d
    ",a[i]);
            return;
        }
        for(i=1; i<=n; ++i)
            if(b[i]==0)
            {
                a[step]=c[i];
                b[i]=1;
                dfs(step+1);
                b[i]=0;
            }
    }
    void sort(int *a,int n)
    {
        int i,j,t;
        for(i=0; i<n; i++)
            for(j=0; j<n-i; j++)
                if(a[j]>a[j+1])
                {
                    t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
    }
    int main()
    {
        scanf("%d",&n);
        int sum=1, i;
        memset(b,0,sizeof(b));
        for(i=1; i<=n; ++i)
        {
            scanf("%d",a+i);
            c[i]=a[i];
        }
        for(i=n; i>0; i--)sum*=i;
        printf("%d
    ",sum);
        sort(a,n);
        sort(c,n);
        dfs(1);
        return 0;
    }

  • 相关阅读:
    requirejs官网
    【PC端】jQuery+PHP实现浏览更多内容(jquery.more.js插件)
    自学Zabbix4.0之路
    自学Python-socket基础
    自学Aruba集锦
    自学zabbix集锦
    自学工业控制网络之路
    自学Linux命令行与Shell脚本之路
    自学Aruba之路
    自学Zabbix之路
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989627.html
Copyright © 2020-2023  润新知