中文JAVA技術平等自由協作創造

          Java專題文章博客和開源

          常用鏈接

          統計

          最新評論

          用遞歸的方法來實現強大的全排列功能

            題目描述:

            輸入一行字符串,然后將字符串中的所有字符進行全排列,然后按照從小到大的順序輸出,每個輸出占一行。

            輸入輸出示例:

            輸入數據:

            abc

            輸出數據:

            abc

            acb

            bac

            bca

            cab

            cba

            分析:

            使用string來保存字符串,便于拆分和分割。使用vector來保存全排列的結果,便于操作和排序。

            用戶輸入一個字符串str,程序的任務是對str求全排列,也就是求str[0]~str[length-1]的全排列

            可以分為先求str的第一個字符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]分別插入到這個全排列的每個結果的所有的位置;

            當n = length -1 的時候,找到遞歸的出口。

            通過遞歸獲得str的全排列,然后通過stl中的sort函數,進行排序。

            程序代碼:

            #include<IOSTREAM>

            #include

            #include<VECTOR>

            using namespace std;

            vector<STRING> fun(string str)

            {

            vector<STRING> v;

            if(str.length()==1) //遞歸的出口

            {

            v.push_back(str);

            return v;

            }

            char c = str[0];

            string x = str.substr(1);

            vector<STRING> t = fun(x);

            for(int i=0;i<T.SIZE();I++) cin str; string { main() int } v; return sort(v.begin(),v.end()); v.push_back(temp); temp="t[i].substr(0,j)+c+t[i].substr(j);" 將每一個字符串從j處分隔開,然后插入c 對于每一種排列情況,?見縫插針? t[i].length();j++) j="0;j<=" for(int n-1個字符的全排列》str;

            vector<STRING> v;

            v = fun(str);

            vector<STRING>::iterator p;

            for(p=v.begin();p<V.END();P++) { } return pre }< 0; cout《*p《endl;><BR>

            <P></P>

            ?? 托福答案  www.qcwyo68.com

          posted on 2014-02-12 18:15 好不容易 閱讀(153) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 马鞍山市| 太白县| 常州市| 包头市| 射阳县| 金塔县| 盘锦市| 闵行区| 沈丘县| 汨罗市| 时尚| 临潭县| 宁蒗| 天全县| 中山市| 梁山县| 汝南县| 清流县| 张家川| 久治县| 商丘市| 五寨县| 绿春县| 阳信县| 和田县| 梅河口市| 佛山市| 正蓝旗| 勃利县| 青川县| 资讯 | 武陟县| 平远县| 读书| 福州市| 南乐县| 商水县| 孝感市| 灵川县| 固始县| 慈利县|