欢迎来到天天文库
浏览记录
ID:8851236
大小:25.50 KB
页数:3页
时间:2018-04-09
《用递归的方法来实现强大的全排列功能》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、用递归的方法来实现强大的全排列功能输入一行字符串,然后将字符串中的所有字符进行全排列,然后按照从小到大的顺序输出,每个输出占一行。 输入输出示例: 输入数据: abc 输出数据: abc acb bac bca cab cba 分析: 使用string来保存字符串,便于拆分和分割。使用vector来保存全排列的结果,便于操作和排序。 用户输入一个字符串str,程序的任务是对str求全排列,也就是求str[0]~str[length-1]的全排列 可以分为先求str的第一个
2、字符str[0],然后求str[1]~str[length-1]的全排列,然后将str[0]分别插入到这些全排列的不同的位置中; 然后求str[1]~str[length-1]的全排列,有可以分成先求str[1],然后求str[2]~str[length-1]的全排列,然后将str[1]插入到不同的位置中; 由此得到递归, 求str[n]~str[length-1]的全排列,分为先求str[n-1]~str[length-1]的全排列,然后将str[n]分别插入到这个全排列的每个结果的所有的位
3、置; 当n=length-1的时候,找到递归的出口。 通过递归获得str的全排列,然后通过stl中的sort函数,进行排序。 程序代码: #include #include #include usingnamespacestd; vectorfun(stringstr) { vectorv; if(str.length()==1)//递归的出口 { v.push_back(str); returnv;
4、} charc=str[0]; stringx=str.substr(1); vectort=fun(x); for(inti=0;i5、th();j++)j="0;j<="for(intn-1个字符的全排列》str; vectorv; v=fun(str); vector::iteratorp; for(p=v.begin();p ??
5、th();j++)j="0;j<="for(intn-1个字符的全排列》str; vectorv; v=fun(str); vector::iteratorp; for(p=v.begin();p ??
此文档下载收益归作者所有