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






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


  • 相关阅读:
    js forEach方法
    day1总结
    jupyter notebook
    java_13网络编程
    原生 input radio 优化
    JQ 获取 input file 图片 显示在对应位置
    math.js 使用
    前端优化
    文字动态颜色变化效果
    谷歌,火狐隐藏滚动条
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7096075.html
Copyright © 2020-2023  润新知