zoukankan      html  css  js  c++  java
  • sdut oj 1163 C语言实验——排列 (当初不会递归生成排列,这个题目现在才补上 刘汝佳给出了写法 *【模板】 当然有生成全排列的函数存在 )

    C语言实验——排列

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描述

    有4个互不相同的数字,请按序输出由其中三个不重复数字组成的排列。

    输入

    4个整数。

    输出

    所有排列,输出顺序见样例。

    示例输入

    1 2 3 4

    示例输出

    1 2 3
    1 3 2
    2 1 3
    2 3 1
    3 1 2
    3 2 1
    1 2 4
    1 4 2
    2 1 4
    2 4 1
    4 1 2
    4 2 1
    1 3 4
    1 4 3
    3 1 4
    3 4 1
    4 1 3
    4 3 1
    2 3 4
    2 4 3
    3 2 4
    3 4 2
    4 2 3
    4 3 2

    也许是很可笑吧,大一就该学会的题目,我是到现在才做,不过至少我还没放弃和忘记!
    俞敏洪说:爬上金字塔的有两种生物,一是雄鹰,靠自身的天分就可以飞得很高,登上金字塔的顶峰是轻而易举的。
    还有一种生物是蜗牛,靠着一股毅力和信心,它一样可以爬到金字塔的顶峰,只要它还在努力,只要它还没放弃,一
    切都还有希望!
    希望每个在向成功路上奋斗的每个人都会像蜗牛那样继续坚持下去!终有一天会登顶金字塔,看到别人看不到的人
    生风景。

    代码:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <limits.h>
    #include <algorithm>
    
    using namespace std;
    int a[4];
    
    void Print_permutation(int n, int *a, int *c, int cur )
    {
        int i, j;
        if(cur==n)
        {
            for(i=0; i<n; i++)
            {
                if(i==0)
                    printf("%d", a[i] );
                else
                    printf(" %d", a[i]);
            }
            printf("
    ");
        }
        else
        {
            for(i=0; i<3; i++)
            {
                int ok=1;
                for(j=0; j<cur; j++)
                {
                    if(a[j]==c[i] ) ok=0;
                }
                if(ok)
                {
                    a[cur]=c[i];
                    Print_permutation(n, a, c, cur+1 );
                }
            }
        }
    }
    
    int main()
    {
        int i, j;
    
        for(i=0; i<4; i++)
            scanf("%d", &a[i] );
    
        int b[3];
        int c[3];
        b[0]=a[0];  b[1]=a[1]; b[2]=a[2]; //1 2 3
        for(i=0; i<3; i++) c[i]=b[i];
        Print_permutation(3, b, c, 0);
    
        b[0]=a[0];  b[1]=a[1]; b[2]=a[3]; //1 2 4
        for(i=0; i<3; i++) c[i]=b[i];
        Print_permutation(3, b, c, 0);
    
        b[0]=a[0];  b[1]=a[2]; b[2]=a[3]; //1 3 4
        for(i=0; i<3; i++) c[i]=b[i];
        Print_permutation(3, b, c, 0);
    
        b[0]=a[1];  b[1]=a[2]; b[2]=a[3]; //2 3 4
        for(i=0; i<3; i++) c[i]=b[i];
        Print_permutation(3, b, c,0);
    
        return 0;
    }
    
     
  • 相关阅读:
    学习日报
    学习日报
    学习日报
    学习日报
    《人月神话》读后感(第一二章)
    线程
    for each
    类的访问属性
    异常
    输入输出流
  • 原文地址:https://www.cnblogs.com/yspworld/p/4253796.html
Copyright © 2011-2022 走看看