中文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 好不容易 閱讀(157) 評論(0)  編輯  收藏


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


          網站導航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 鄂托克旗| 潢川县| 美姑县| 鄂尔多斯市| 丘北县| 通化县| 昌乐县| 清镇市| 洛浦县| 兰考县| 绥德县| 元氏县| 新昌县| 铁力市| 南溪县| 金堂县| 郯城县| 穆棱市| 方正县| 兴海县| 老河口市| 泰顺县| 格尔木市| 沅江市| 阿鲁科尔沁旗| 永丰县| 花莲县| 南澳县| 客服| 垦利县| 苗栗市| 东至县| 万州区| 台湾省| 古田县| 天等县| 山阳县| 顺平县| 开原市| 濮阳县| 清远市|