[問題] 遞迴排列-- 避免重複字元的遞迴

看板C_and_CPP作者 (薯)時間15年前 (2010/03/16 15:56), 編輯推噓4(4015)
留言19則, 5人參與, 最新討論串1/6 (看更多)
我打算用遞迴寫字元的排列 可是這個字元陣列裡有時候可能會有重複的情況 譬如說 a b c d e f # # 當這八個字元下去做排列的時候 理應只有 8!/2! 的答案 但是對於電腦來說還是有8!個答案 請問要怎麼樣避免這種狀況發生?? 可否題點一下解決的方法@.@? 使用遞迴實在是好難...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.115.251

03/16 16:08, , 1F
一個很暴力的方法是用hash記下哪個曾經出現過...
03/16 16:08, 1F

03/16 16:09, , 2F
另外一個方法是給予同樣的 symbol 編號
03/16 16:09, 2F

03/16 16:09, , 3F
如 #1 #2 #3
03/16 16:09, 3F

03/16 16:09, , 4F
而在做遞迴排列時增設條件, 條件是
03/16 16:09, 4F

03/16 16:10, , 5F
同樣的 symbol 編號小的一定要在編號大的前面
03/16 16:10, 5F

03/16 16:11, , 6F
沒細想, 應該可行, 有問題有其他高手版大會幫忙提出XD
03/16 16:11, 6F

03/16 18:05, , 7F
###1 照樓上的方法可以排出 #1## 嗎
03/16 18:05, 7F

03/16 18:07, , 8F
03/16 18:07, 8F

03/16 18:16, , 9F
樓下V大
03/16 18:16, 9F

03/16 20:17, , 10F
可以請教一下Y大是怎麼做的嗎@.@?
03/16 20:17, 10F

03/16 21:00, , 11F
遞迴只應118用, 凡人該當用迴圈.
03/16 21:00, 11F

03/16 22:08, , 12F
樓下V大
03/16 22:08, 12F

03/16 22:22, , 13F
好像很有趣....我想想看
03/16 22:22, 13F

03/16 22:29, , 14F
樓下V大
03/16 22:29, 14F

03/17 00:15, , 15F
寫出來了 =.=
03/17 00:15, 15F

03/17 00:36, , 16F
原po已經寫出用遞迴列出"會重覆"的排列了嘛
03/17 00:36, 16F

03/17 00:37, , 17F
關鍵在於.... 要寫個區域陣列變數,記錄下自己已經用過的字
03/17 00:37, 17F

03/17 00:37, , 18F
母,只要不用同樣的字母下去跑,就ok了
03/17 00:37, 18F

03/17 00:39, , 19F
如果你想看C#的程式碼 我可以寄給你.... C++我忘很久了 = =
03/17 00:39, 19F
文章代碼(AID): #1Bdpc-Rb (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Bdpc-Rb (C_and_CPP)