首页 > 编程语言 > 详细

经典算法——字符串的全部组合

时间:2017-06-29 20:17:32      阅读:361      评论:0      收藏:0      [点我收藏+]



技术分享


#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;
}

技术分享

经典算法——字符串的全部组合

原文:http://www.cnblogs.com/lytwajue/p/7096075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!