字符串中字符的所有组合(递归方式)

Posted ZDF0414

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串中字符的所有组合(递归方式)相关的知识,希望对你有一定的参考价值。

思路:根据递归的特性,确定产生的字符组合顺序

例:字符串“abc”的字符组合

产生的顺序为: a、b、c、ab、ac、bc、abc

void Print(vector<char>& v)

	for (int i = 0; i<v.size(); i++)
	
		cout << v[i];
	
	cout << endl;

void _Combination(char* str, int len, vector<char>&v)

	if (!str || (*str == '\\0'&&len > 0))
		return;
	if (len == 0)
	
		Print(v);
		return;
	
	v.push_back(*str);
	_Combination(str + 1, len - 1, v);
	v.pop_back();
	_Combination(str + 1, len, v);

void ComBination(char* str)

	vector<char>v;
	int len = strlen(str);
	for (int i = 1; i <= len; i++)//组合字符的长度
	
		_Combination(str, i, v);
	


以上是关于字符串中字符的所有组合(递归方式)的主要内容,如果未能解决你的问题,请参考以下文章

在 C 中使用递归打印字符串的所有组合

算法递归思想

使用递归搜索整数数组中元素的所有组合

从字符串生成子字符串的组合

输出字符串所有组合

“程序收到信号SIGSEGV,分段错误”当试图使用递归获取3个字符组合的所有关键字时