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;
    }

     

     

  • 相关阅读:
    第八次作业
    微信用户体验
    •设计一款给爸爸妈妈用的手机
    对类的继承
    必应词典
    第二次作业二
    第二次作业
    我想搞的软工
    数字签名
    C++的学习心得
  • 原文地址:https://www.cnblogs.com/blowhail/p/11153111.html
Copyright © 2011-2022 走看看