剑指offer-拓展训练-字符的所有组合-全组合
Posted buaazhhx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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; } } } }
以上是关于剑指offer-拓展训练-字符的所有组合-全组合的主要内容,如果未能解决你的问题,请参考以下文章
剑指offer-字符的所有组合,复制复杂链表,二叉树中和为某一值的路径
LeetCode1269. 停在原地的方案数 / 剑指 Offer 38. 字符串的排列 / 216. 组合总和 III / 剑指 Offer 39. 数组中出现次数超过一半的数字/229. 求众数(