台灣最大程式設計社群網站
線上人數
813
 
會員總數:244989
討論主題:188956
歡迎您免費加入會員
討論區列表 >> C/C++ >> 印出字典順序
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
印出字典順序
價值 : 20 QP  點閱數:3450 回應數:7

樓主

阿魚
初學者
203 12
712 50
發送站內信

捐贈 VP 給 t313036
如何寫一程式印出字典順序?
例如:
輸入 
abc
印出
abc
acb
bac
bca
cab
cba

搜尋相關Tags的文章: [ 字典順序 ] ,
本篇文章發表於2005-03-08 19:06
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

瘋仔
捐贈 VP 給 瘋仔 檢舉此回應
這...是泡沫排序法吧??
書上找找看,一般都會有,小改一下就可以用了,有問題再來問吧
本篇文章回覆於2005-03-08 21:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿魚
捐贈 VP 給 t313036 檢舉此回應
點點點......
這不是排序,和排序沒關係= =
本篇文章回覆於2005-03-08 21:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

formosa
捐贈 VP 給 formosa 檢舉此回應
如果沒錯•••好像會去牽扯到 排列組合

類似於:
九宮格、放入數字1~9、不管對角線、行、列,總和都是15,算出有幾種排法。

只是這題只需要 a,b,temp 即可。
本篇文章回覆於2005-03-08 22:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

小白
捐贈 VP 給 Marcus 檢舉此回應
這個很簡單…只要用 C++ 的 STL 函式庫 next_permutation 便可以了。

#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
using namespace std;
int main(){
  string s;
  cin >> s;
  sort(s.begin(),s.end());
  cout << s << endl;
  while(next_permutation(s.begin(),s.end()))
     printf("%s\n",s.c_str());
  return 0;
}



另外也可以用遞迴達成,但我寫過的只有 PASCAL 程式,如果你看得懂的話,可以向我拿。
MSN: doraemon2112_mp@msn.com
網站:http://cccentre.hk.st/
本篇文章回覆於2005-03-08 23:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

小白
捐贈 VP 給 Marcus 檢舉此回應
另外,給你幾道題目參考看看哦
http://acm.uva.es/p/v100/10098.html
http://acm.uva.es/p/v1/195.html

加油!
本篇文章回覆於2005-03-08 23:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

阿魚
捐贈 VP 給 t313036 檢舉此回應
這ㄍ方法很精簡快速,但是如果沒背到此函式要怎麼辦勒?
因為這是考試題目的一個副程式,考試的時候又不能去查MSDN......
如何只用簡單ㄉ敘述配合邏輯思考來解這題?
本篇文章回覆於2005-03-09 21:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

小白
捐贈 VP 給 Marcus 檢舉此回應
在下有用 PASCAL 寫過這個程式,主要是用遞迴寫的,演算法如下所示:

GENERATE_PERMUTATION(STRING, LIST, LEVEL)
1   If LEVEL > 0 Then
2      For Each item i belongs to STRING
3         Do GENERATE_PERMUTATION(STRING \ {i}, LIST + {i}, LEVEL - 1)
             (由 STRING 移除 i ,並加至 LIST 後面)
4   ELSE
5      輸出 STRING


Call 的時候:
1   Sort(STRING)  把 string 排序
2   GENERATE_PERMUTATION(STRING, {空集}, Length(STRING))


加油!
本篇文章回覆於2005-03-10 00:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.