zoukankan      html  css  js  c++  java
  • 字符串的排列

    输入一个字符串,打印出该字符串中字符的所有排列。

    例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 

    思路:

    把一个字符串看成两部分组成:第一部分为第一个字符,第二部分为后面的所有字符。

    求整个字符串的排列,可以看出两步:首先求所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符交换;然后固定第一个字符,求后面所有字符的排序。此时仍把后面的字符看成两部分,第一个字符和后面的字符,然后重复上述步骤。(递归)

    #include <iostream>
    
    using namespace std;
    
    void p2(char *a,char *cur)
    {
        if(*cur=='')
            cout<<a<<'
    ';
        else{
            for(char *p=cur;*p!='';p++)
            {
                swap(*p,*cur);
                p2(a,cur+1);
                swap(*p,*cur);
            }
        }
    }
    
    void p1(char *a)
    {
        if(a==NULL)
            return;
        p2(a,a);
    }
    int main()
    {
        char a[]="abc";
        p1(a);
        return 0;
    }
  • 相关阅读:
    SQL操作符的优化
    Oracle 模糊查询 优化
    Mysql中的语句优化
    SQL优化
    Pro Git读书笔记
    前端工程化
    前端工程化
    前端工程化
    前端工程化
    前端工程化
  • 原文地址:https://www.cnblogs.com/home123/p/7291902.html
Copyright © 2011-2022 走看看