【 在
fisht...@bbs.es.ncku.edu.tw (....) 的大作中提到: 】
: 目前小弟想要寫一個組合 C 的功用
: 就是有 A B C D E
: 取 k=3
: 可得 ABC ABD ABE ACD ACE ADE
: 可以使用 k 個 FOR 回圈完成
: 但是因為 k 可能很大
: 所以想說使用遞迴
: 但是太難,想不出來
: 是否有高手可以幫忙,或是介紹書籍
: Thanks
you can use STACK!!
ABCDE先取其中k個~~就有k條路...
1.取A剩BCDE 2.取B剩ACDE 3.取C剩ABDE 4.取D剩ABCE 5.取E剩ABCD (此時把54321push)
再從這五條路每條再分成4條...如第一條會分成 (pop第1條)
1-1.取AB剩CDE 1-2.取AC剩BDE 1-3.取AD剩BCE 1-4.取AE剩BCD (push1-4,1-3...)
如再從1-1再細分成三條路出去...就成為下面這樣 (pop1-1)
1-1-1.取ABC剩DE 1-1-2.取ABD剩CE 1-1-3.取ABE剩CD (push1-1-3....)
當K=3時我們前面輸出的前三個就是ABC及ABD及ABE.... (到尾pop出即答案)
而從1-2再分下來會得到ACB、ACD、ACE之後以此類推...
這是我們以前把它畫成tree去使用的方法..程式很好寫~~但需要用到STACK..
遞迴也簡單~~但彈性可能會比較小...本來應該用樹的方式畫出...
但在bbs上我就不大會畫了~希望能幫助到你...
--
[m [1;32m※ 來源:‧TKU CS BBS bbs.cs.tku.edu.tw‧[FROM: PCA3.im.tku.edu] [m