经典算法——字符串的所有组合

Posted zhihua_bupt

tags:

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



技术分享


#include<iostream>
#include<vector>
#include<string.h>
using namespace std;

//从头扫描字符串得到第一个字符,针对第一个字符,有两种选择
//把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;
//如果不把这个字符放到组合中去,则需要在剩下的n-1个字符中选取m个字符 
void Combination(char* string, int number, vector<char>& result)
{
	if (number == 0)
	{
		vector<char>::iterator iter = result.begin();
		for (; iter < result.end(); ++iter)
			cout << (*iter);
		cout << endl;
		return;
	}
	if (*string == '\0')
		return;
	result.push_back(*string);
	Combination(string + 1, number - 1, result);//把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符
	result.pop_back();
	Combination(string + 1, number, result);//不把这个字符放到组合中去,则需要在剩下的n-1个字符中选取m个字符 
}

void Combination(char* string)
{
	if (string == NULL)
		return;
	int length = strlen(string);
	vector<char> result;
	for (int i = 1; i <= length; i++)
	{
		Combination(string, i, result);
	}
}

int main()
{
	char s[] = "abc";
	Combination(s);
	system("pause");
	return 0;
}

技术分享







以上是关于经典算法——字符串的所有组合的主要内容,如果未能解决你的问题,请参考以下文章

《算法竞赛入门经典》3.3最长回文子串

JavaScript 代码片段

C语言100个经典算法源码片段

48个值得掌握的JavaScript代码片段(上)

片段(Java) | 机试题+算法思路+考点+代码解析 2023

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)