《用递归的方法来实现强大的全排列功能》由会员分享,可在线阅读,更多相关《用递归的方法来实现强大的全排列功能(3页珍藏版)》请在金锄头文库上搜索。
1、用递归的方法来实现强大的全排列功能输入一行字符串,然后将字符串中的所有字符进行全排列,然后按照从小到大的顺序输出,每个输出占一行。输入输出示例:输入数据:abc输出数据:abcacbbacbcacabcba分析:使用 string 来保存字符串,便于拆分和分割。使用 vector 来保存全排列的结果,便于操作和排序。用户输入一个字符串 str,程序的任务是对 str 求全排列,也就是求 str0strlength-1的全排列可以分为先求 str 的第一个字符 str0,然后求 str1strlength-1的全排列,然后将 str0分别插入到这些全排列的不同的位置中;然后求 str1strle
2、ngth-1的全排列,有可以分成先求 str1,然后求str2strlength-1的全排列,然后将 str1插入到不同的位置中;由此得到递归,求 strnstrlength-1的全排列,分为先求 strn-1strlength-1的全排列,然后将 strn分别插入到这个全排列的每个结果的所有的位置;当 n = length -1 的时候,找到递归的出口。通过递归获得 str 的全排列,然后通过 stl 中的 sort 函数,进行排序。程序代码:#include#include#includeusing namespace std;vector fun(string str)vector v;if(str.length()=1) /递归的出口v.push_back(str);return v;char c = str0;string x = str.substr(1);vector t = fun(x);for(int i=0;i v;v = fun(str);vector:iterator p;for(p=v.begin();p?