zoukankan      html  css  js  c++  java
  • 全排列

    一串字母完全不同的字符,输出出全排列。如ABC输出 ABC ACB BAC BCA CAB CBA;

    用递归的方法:

    将前面的元素依次固定,从后面进行交换,输出。

     

    附上代码,用注释的形式解释

    //n为字符长度,k为当前进行到的位数;
    char a[105];
    void cmp(int n,int k)
    {
        if (k==n) 
            cout<<a<<endl;
        else
        {
            for (int i=k;i<n;++i)
            {
           //一开始是让它自己与自己交换,直到最后一项执行完才开始从后往前交换输出;
           //最后一项自己交换完之后,就会让最后一个元素和倒数第二个进行交换,然后往前依次进行;
    
                swap(a[i],a[k]); 
                cmp(n,k+1);
                swap(a[i],a[k]);  //递归完之后要换回来
            }
        }
    }
    int main ()
    {
        int n;
        gets(a);
        n=strlen(a);
        cmp(n,0);
    
        return 0;
    }

     

     

  • 相关阅读:
    centos 7安装配置vsftpd
    lvs和haproxy机器必须注意的三个参数
    用python 脚本实现zabbix对java端口报警
    git的下载地址
    看的一篇很好的博客
    学习内容
    数组一些用法
    dom
    dom1
    for的基础
  • 原文地址:https://www.cnblogs.com/blowhail/p/11153111.html
Copyright © 2011-2022 走看看