zoukankan      html  css  js  c++  java
  • 剑指offer+名企面试官精讲典型编程题,28题扩展题

    题目28扩展:求字符的所有组合
      eg:abc对应的组合a,b,c;a,b,c,ab,ac,bc,abc
    思路:分两步:n-1个字符串中长度为m-1的组合;n-1个字符的长度中长度为m的组合
      eg:3个字符abc,组成长度为1的组合 a -> (b,c)中取长度0的组合;(b,c)中取长度1的组合
         (b,c)中取长度1的组合 b -> (c)中取长度0的组合; (c)中取长度1的组合
          最终就是a,b,c
    递归出口:长度=0或者字符串到达末尾''。
    #include<iostream>
    #include<string>
    using namespace std;
    void Combination(char* str,int length);
    void combination(char* str,int length,string result);
    void test(char* str,int length);
    void test(char* str,int length)
    {
            if(NULL==str)
                    cout<<"origin str is NULL"<<endl;
            else
            cout<<"origin str="<<str<<endl;
            Combination(str,length);
    }

    void combination(char* str,int length,string result)
    {
            if(*str==''||length==0)
            {
                    cout<<result<<endl;
                    return ;
            }
            string tmp = result + *str;
            if( strlen(str+1)>=length-1 )
            {
                    combination(str+1,length-1,tmp);
            }
            if(strlen(str+1)>=length)
            {
                    combination(str+1,length,result);
            }
    }
    void Combination(char* str,int length)
    {
            if(NULL==str||length<=0)
                    return;
            string res;
            for(int idx = 1;idx<=length;++idx)
            {
                    combination(str,idx,res);
            }
    }
    int main()
    {
            char str[] = "abc";
            test(str,strlen(str));
            cout<<endl;

            char str2[] = "ab";
            test(str2,strlen(str2));
            cout<<endl;

            char* str3 = NULL;
            test(str3,0);
            cout<<endl;

            char str4[] = "";
            test(str4,1);
            cout<<endl;

            char str5[] = "a";
            test(str5,2);
            cout<<endl;

            system("pause");
    }


  • 相关阅读:
    今发现“最全前端资源汇集”,果断收藏
    js基础
    重排版与重绘
    小乌龟的配置
    考试网站
    苹果手机上时间的兼容
    自定义alert
    [概率dp] 流浪地球
    [权值线段树] 1163B2 Cat Party (Hard Edition)
    [单调栈]1156E Special Segments of Permutation
  • 原文地址:https://www.cnblogs.com/meihao1203/p/9152579.html
Copyright © 2011-2022 走看看