左神算法基础class8—题目3打印字符串的全部子序列

左神算法基础class8—题目3打印字符串的全部子序列

1.题目:打印一个字符串的全部子序列,包括空字符串

2.分析

假如字符串为abc,所有子串的可能为:空,a,ab,ac,abc,b,bc,c

对于字符串的每一个元素,我们都可以选择要或者不要,如下图,如果需要当前元素,获得一个“a”第一个元素不需要的话那么第一个就是“ ”,再接着向后判断,b元素依然可以选择需要或者不需要,那么就有四种可能“ab”,“a ”,“ b”,“ ”。对下一个元素c也是同理。整个递归的结束条件是当前索引不在字符串内
在这里插入图片描述

3.完整代码

#include<iostream>
#include<string>
using namespace std;

//s是给定的字符串,i是索引,res是结果
void print(const string s,int i,string res)
{
	if(i == s.size())	//超出索引,打印上一级传递的结果
	{
		cout<<res<<endl;
		return;
	}
	else
	{
		print(s,i + 1,res + s[i]);	//添加当前字符
		print(s,i + 1,res );		//丢弃当前字符
	}
}

int main()
{
	string s = "abc";
	string res;
	print(s,0,res );

	return 0;
}
发布了51 篇原创文章 · 获赞 1 · 访问量 1363

猜你喜欢

转载自blog.csdn.net/shi_xiao_xuan/article/details/104823699
今日推荐