→ wvwvwvwvwv: 2~12的機率有錯哦 1.2....6....2.1 01/18 19:43
對耶XD
推 remizu: 函數包迴圈再遞迴即可 01/18 20:20
→ dritchie: 應該是DP找零錢問題的延伸? 01/19 00:26
→ bibo9901: convolution 01/19 02:53
→ bigpigbigpig: 你需要 Cartesian product (直積) 01/19 06:38
沒想到還有這兩種運算方法可以用0.0
......(理解中)(腦袋冒煙)
→ bigpigbigpig: how-can-i-create-cartesian-product-of-vector-of- 01/19 14:11
→ bigpigbigpig: vectors (C++ code,自己連結 link) :) 01/19 14:12
→ o07608: 喔喔感謝0.0 01/19 14:32
→ o07608: 有時間的話三種方法都各寫一個版本看看 01/19 14:58
→ o07608: 測資太大會跑不動(噴笑) 01/19 17:26
→ bigpigbigpig: 10 顆骰子,測資會太大嗎?多少顆骰子算太大? 01/19 17:40
→ o07608: 10顆沒問題,不過會花點時間運算 01/19 17:50
→ o07608: 不過我還沒用Cartesian product來寫,待會貼上程式碼 01/19 17:51
我目前先用conan0914板友在下一篇提供的程式碼來跑
感謝conan0914提供的程式碼,讓我至少能完成第一版的程式
而且也能比較熟悉遞迴怎麼用
底下是完整的程式碼:
http://codepad.org/YRy4ifog
不過題目要求要有5次、10次、20次的結果,而測到20次時程式就跑不動了XD
我還沒仔細研究Cartesian product,吃完晚餐來看看
→ o07608: 剛剛測了一下時間,扔十次要花三秒 01/19 18:06
→ o07608: 如果我沒理解錯的話,應該是要跑6^n次 01/19 18:07
→ o07608: 那扔20次要跑5.6年...... 01/19 18:07
推 winken2004: 另外我看一下6^20約有10^15 分散給20~120 01/19 18:18
→ winken2004: data type用int的話小心overflow 01/19 18:19
→ o07608: 可是在我的電腦上,long的大小和int一樣0.0 01/19 18:24
推 bigpigbigpig: 20 顆骰子就得用 Dynamic Programming 才算得出來:) 01/19 19:41
→ o07608: 這又是一個要重新學習的範疇(死) 01/19 20:13
→ o07608: 居然瞬間想出來了......天啊 01/19 20:23
我目前的想法,是先把所有次數分成兩次兩次來算,分成幾小包
算完之後再每兩個小包下去算,重複直到結束
目前還在想實現的方法,不知道可不可行
※ 編輯: o07608 (114.27.11.45), 01/19/2015 21:22:35
推 bigpigbigpig: 提示:n顆點數和S 第一顆出1~6 其他顆總和S-1...S-6 01/19 21:34
→ o07608: 目前寫出來了,但不是用DP來寫的,現在回頭想DP 01/20 17:09