中文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開獎
          主站蜘蛛池模板: 青河县| 阳原县| 纳雍县| 青铜峡市| 五莲县| 平谷区| 景德镇市| 吐鲁番市| 宁国市| 来凤县| 龙陵县| 右玉县| 黑龙江省| 祁阳县| 南岸区| 米易县| 永福县| 湟中县| 贺州市| 大丰市| 突泉县| 同心县| 修文县| 孟津县| 汉川市| 凤城市| 文安县| 炉霍县| 明水县| 潼南县| 乌拉特后旗| 七台河市| 德江县| 灵石县| 沂源县| 冕宁县| 社会| 乌拉特前旗| 宜宾市| 梁平县| 九龙坡区|