码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-06-29 20:39:54      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:log   []   post   art   class   length   char*   ack   分享   



技术分享


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

技术分享

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

标签:log   []   post   art   class   length   char*   ack   分享   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!