Re: [討論] 排列組合的演算法解題

作者: gecer (gecer)   2021-08-01 21:45:46
※ 引述《SocketAM2 (AM2)》之銘言:
: 基本想法是一個個位數iterate過去
: 有個簡單的剪枝手段:不可能達成4個的時候就不用往下數了
: 例如10000xx,最多就3個數
: 再來是個簡單的算小計手段:已經數到四個數了,剩下的位數只能在已知最大值之內
: 例如1234xyz中的xyz各能在(0,1,2,3,4)中任選,所以這類共5^3=125個
: 我試了下python,光用上面這兩招沒特別雕語法
: 大概可以跑在一秒多
: 原po可以參考看看
: 還有版友想得到其他有效手段嗎?
: 剛剛又發現一個不錯的手段:建表查表
: 例如前面算過1234xyz這類共125個
: 建個表,key是“ 前四位數最大為4,且已經數到4個數了”,值是125
: 以後再碰到這種case就直接小計125
: 遇到表上沒有的就往下拆分算完再加進表內
: 加上這招可以壓到0.03秒左右
小弟目前遇到同樣的問題 不過小弟的狀況是排列組合預估會有6^200 有可能記憶體不夠
或是計算時間過於長久 不曉得有沒有加速的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com