开发者社区> 问答> 正文

acm题 用c语言设计一个递归算法求全排列

acm题 用c语言设计一个递归算法求全排列

展开
收起
知与谁同 2018-07-19 15:39:12 1638 0
3 条回答
写回答
取消 提交回答
  • 12535
    这是排序 不是全排列
    2019-07-17 22:55:35
    赞同 展开评论 打赏
  • 这个时候,玄酱是不是应该说点什么...
    #include "stdio.h"
    #include "conio.h"

    /*把数组中的afrom到ato数据排序*/
    void paixu(int a[],int afrom,int ato)
    {
    int i,maxi,temp;
    if(afrom==ato) return;

    paixu(a,afrom+1,ato);
    if(a[afrom]<a[afrom+1]) {
    temp=a[afrom];
    a[afrom]=a[afrom+1];
    a[afrom+1]=temp;
    paixu(a,afrom+1,ato);
    return;
    }
    else
    return;
    }

    main()
    {
    int i;
    int a[]={9,8,5,4,9,8,6,5,7,5};
    paixu(a,0,9);

    for(i=0;i<10;i++)
    printf("%4d",a[i]);

    printf("\n");
    getch();
    }
    2019-07-17 22:55:35
    赞同 展开评论 打赏
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    //1.cpp生成1~n的全排列
    #include<stdio.h>
    void Arrange(int cur,int n,int* arr)
    {
        if(cur==n+1)
        {
            for(int i=1;i<cur;i++)
                printf("%d ",arr[i]);
            printf("\n");
            return ;
        }
        for(int i=1;i<=n;i++)
        {
            int ok=1;
            for(int j=1;j<cur;j++)
                if(arr[j]==i)
                    ok=0;
            if(ok)
            {
                arr[cur]=i;
                Arrange(cur+1,n,arr);
            }
        }
    }
    int main()
    {
        int arr[15];
        //生成1~n的排列
        int n;
        printf("Input n:");
        scanf("%d",&n);
        Arrange(1,n,arr);
        return 0;
    }
    //2.cpp生成集合中元素的全排列
    #include<stdio.h>
    int Set[15];
    int Arr[15];
    int n;
    void Arrange(int cur)
    {
        if(cur==n+1)
        {
            for(int i=1;i<cur;i++)
                printf("%d ",Arr[i]);
            printf("\n");
            return ;
        }
        for(int i=1;i<=n;i++)
        {
            int ok=1;
            for(int j=1;j<cur;j++)
                if(Arr[j]==Set[i])
                    ok=0;
            if(ok)
            {
                Arr[cur]=Set[i];
                Arrange(cur+1);
            }
        }
    }
    int main()
    {
        printf("Input number of elem:");
        scanf("%d",&n);//元素个数
        printf("Input elems:");
        for(int i=1;i<=n;i++)//元素
            scanf("%d",&Set[i]);
        Arrange(1);
        return 0;
    }
    2019-07-17 22:55:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
图解算法小抄 立即下载
超全算法笔试 模拟题精解合集 立即下载
超全算法笔试-模拟题精解合集 立即下载