zoukankan      html  css  js  c++  java
  • 剑指offer-拓展训练-字符的所有组合-全组合

    /*
    题目:
    	给定不含重复字符字符串的全组合。
    */
    /*
    思路:
    	递归法。
    	例给定abc,输出的组合长度为1,2,3.
    	对于长度为2的组合,分选择a(ab,ac)和不选择a的情况(bc)。
    	选择a,则在剩余字符串中选择长度为1的字符组合;
    	不选择a,则在剩余字符串中选择长度为2的字符组合。
    */
    #include<iostream>
    #include<stdio.h>
    #include<string>
    
    using namespace std;
    
    string curr;
    
    void combination(string str,int len,int beginIndex){
    	//当遍历到字符串的末尾,但所需长度不够,直接返回。
        if(beginIndex == str.size()  && len != 0){
            return;
        }
    	//当长度足够,则输出当前字符串。
        if(len == 0 ){
            cout<<curr<<" ";
        }else{
    		//选择当前字符串的情况
            curr+=(str[beginIndex]);
            combination(str,len-1,beginIndex+1);
    		//不选择当前字符串的情况
            curr.erase(curr.size()-1);
            combination(str,len,beginIndex+1);
        }
    }
    
    int main(){
        string str;
        while(getline(cin,str)){
            if(str == "")
                cout<<endl;
            else{
                for(int len = 1; len <= str.size(); len++){
                    combination(str,len,0);
                    cout<<endl;
                }
    
            }
    
        }
    
    }
    

       

  • 相关阅读:
    第7.12节 可共享的Python类变量
    (独孤九剑)--MySQL入门
    (独孤九剑)--错误处理
    PHP图像函数
    (独孤九剑)--图像处理
    (独孤九剑)--文件上传
    (独孤九剑)--文件系统
    (独孤九剑)--正则表达式
    (独孤九剑)--数组与数据结构
    PHP填坑
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/11966363.html
Copyright © 2011-2022 走看看