zoukankan      html  css  js  c++  java
  • 经典算法——字符串的全部组合





    #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 == '')
    		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;
    }
    


  • 相关阅读:
    C#连接Oracle数据库的连接字符串
    Oracle
    SQL 计算某月有多少天
    七牛开发者文档中心
    ocrstyle
    Linux的sys接口和proc接口创建
    BusHelper
    MeiTuanLocateCity
    Shop
    Win10预览版10162全新安装及激活全过程图解
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7096075.html
Copyright © 2011-2022 走看看