qq_41525202 2020-03-15 15:08 采纳率: 0%
浏览 189

用C语言求全排列怎么求呀,在网上找的代码看不懂555

有没有人会写逻辑简单点的,好理解的,谢谢
感觉全排列好难。。。

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-15 18:23
    关注

    1个数字全排列 1 种
    2个数字全排列,分别把 1 2 排前面,剩下的1个数字跟后面
    3个数字全排列,分别把 1 2 3 排前面,每次剩下2个数字,对它全排列。
    n个数字全排列,分别把1 2 3 ... n 放在前面,然后每个后面对 n - 1 全排列。
    因此就可以递归了

    #include<stdio.h>
    #include<string.h>
    void swap(char *a,char *b)
    {
        char temp;
        temp = *a;
        *a = *b;
        *b = temp;  
    }
    
    void  Allarrange(char *str,int k,int len)
    {
        int i;
        if(k==len)
        {
            static int s_i=1;
            printf("第%d种排列为:\t%s\n",s_i++,str);
        }
        else
        {
            for(i=k;i<=len;i++)
            {
                swap(str+i,str+k);
                Allarrange(str,k+1,len);
                swap(str+i,str+k);
            }
        }
    }
    
    int main()
    {
        char str[10];
        printf("请输入排列的字符串:"); 
        gets(str);
        Allarrange(str,0,strlen(str)-1);
        return 0;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题