字符串排列组合的应用

来源:互联网 发布:星际争霸2 知乎 编辑:程序博客网 时间:2024/06/05 17:02
// String Combination字符串的排列void Combination(char *string, int number, vector<char> &result);void Combination(char *string){ assert(string != NULL);vector<char> result;int i, length = strlen(string);for (i = 1; i <= length; ++i)Combination(string, i, result);}void Combination(char *string, int number, vector<char> &result){ assert(string != NULL);if (number == 0){static int num = 1;printf("第%d个组合\t", num++);vector<char>::iterator iter = result.begin();for (; iter != result.end(); ++iter)printf("%c", *iter);printf("\n");return;}if (*string == '\0')return;result.push_back(*string);Combination(string + 1, number - 1, result);result.pop_back();Combination(string + 1, number, result);}//Apply the Combination of String http://blog.csdn.net/hackbuteer1/article/details/7462447//题目:输入两个整数n和m,从数列1,2,3...n中随意取几个数,使其和等于m,要求列出所有的组合。list<int> list1;void find_factor(int sum, int n){if (n <= 0 || sum <= 0)return;if (sum == n){list1.reverse();for (list<int>::iterator iter = list1.begin(); iter != list1.end(); iter++){cout << *iter << "+";} cout << n << endl; list1.reverse();}list1.push_front(n);find_factor(sum - n, n - 1);//n放在组合中list1.pop_front();find_factor(sum, n - 1);//n不放在组合中}

0 0
原创粉丝点击