看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 88888888888888xxxxxx 想找出上面所有的排列 所以可以把問題簡化為 全部有m個數字 8有n個, 總共有Cm取n種可能 我有寫一個用遞迴的版本, 可是當問題是m = 32 n = 8的時候就很久了 實際上m可能是512 請問有時間複雜度更低的演算法嗎? 或是說 目前這個問題應該用什麼關鍵字找paper來找最快的演算法呢 謝謝~ 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.8.108
Fenikso:你算去算一下512取8有多大我們再來討論這個問題 10/03 03:09
Fenikso: ^多打orz 10/03 03:10
tropical72:排列組合我一直視為暴力法其中一種手段.. 10/03 03:50
ericinttu:C(m,n)還可以簡化,也可以是歷史上的神人了. 10/03 07:48
xatier:就....暴力囉XD 10/03 10:19
ericinttu:暴力下去之前,還要想想電腦吃不吃得了它. 10/03 10:26
priv:你要找出所有的排列只能暴力啊,和遞迴又沒有關係 10/03 10:32
priv:就算因為怕stack暴掉改成for,複雜度還是不可能會變啊.. 10/03 10:32
bigpigbigpig:把 next_permutation() 放在do while迴圈內就搞定了 10/03 11:28
johnhmj:階乘 ( ̄ー ̄;) 大數演算法 10/03 13:46
priv:要列出所有的組合用不到階乘 10/03 13:59
priv:就一個一個列而已 10/03 13:59
priv:是直接找nth才有辦法化簡 10/03 14:00