Re: [閒聊] 臉書在找人

看板Soft_Job作者 (起坐不能平。)時間14年前 (2012/02/28 00:03), 編輯推噓3(309)
留言12則, 4人參與, 最新討論串8/9 (看更多)

02/27 12:05,
這個方法就是暴力展開所有組合。如果只是要算總數用DP就好
02/27 12:05

02/27 12:05,
或者在這個遞迴裡加上 memoization,複雜度差很多。
02/27 12:05

02/27 12:08,
另外這篇的方法似乎會產生重覆的組合(例如 1 2 和 2 1)
02/27 12:08

02/27 12:28,
還會取同一個...
02/27 12:28

02/27 13:34,
所以說如果不要sequence就用int[] count啊
02/27 13:34

02/27 13:49,
把result改成count一樣要展開全部的排列,而且加總值是錯的
02/27 13:49

02/27 13:49,
因為會多算重覆的組合
02/27 13:49
講的太簡單了,如果要直接算結果而不考慮順序, 可以寫成這樣: static void sumupArray2(int[] array, int num, int[] result, int cursor) { if (num == 0) { System.out.println(Arrays.toString(result)); return; } if (num < 0 || cursor == array.length) { return; } int count = 0; while(num >= 0) { result[cursor] = count++; sumupArray2(array, num, result, cursor+1); num -= array[cursor]; } } 總之就是遞迴啦,遞迴的問題主要在於可能會爆掉, 不過在interview的時候只要提到這一點,其實還滿好用的...。

02/27 18:08,
重複組合沒問題啦,你想,有三題三個分數1:5分,2:10分,3:5分,
02/27 18:08

02/27 18:09,
4:5分,求合計10分會得到(5,5),(5,5),10,(5,5),這是重複嗎?
02/27 18:09

02/27 18:10,
其實是(1:5,3:5),(1:5,4:5),2:10,(3:5,4:5),沒有重複啊
02/27 18:10

02/27 18:11,
而且解題是在面試中即時對話進行,這種額外資訊很好解釋的.
02/27 18:11
-- Je t'aime,o capitale infame. Tu m'as donne ta boue et j'en ai fait de l'or. Charles Baudelaire 1821-67 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.22.103.54

02/28 00:29, , 1F
恐怖.. 無窮遞迴 @@
02/28 00:29, 1F

02/28 00:31, , 2F
喔 多了cursor @@? 看不懂在幹麻! XD
02/28 00:31, 2F

02/28 00:33, , 3F
感覺就是錯的~ cursor==array.length 就停是啥意思...XD
02/28 00:33, 3F

02/28 01:27, , 4F
抓下來跑跑看吧... debugger很好用的...
02/28 01:27, 4F

02/28 01:30, , 5F
沒興趣 XD
02/28 01:30, 5F

02/28 01:51, , 6F
只能跟你說你的感覺錯了,答案是對的
02/28 01:51, 6F

02/28 01:51, , 7F
乍看是無窮遞迴,其實有用到二個底,應該會停吧
02/28 01:51, 7F

02/28 15:00, , 8F
下一題就是怎麼改成非遞迴了 XD
02/28 15:00, 8F

02/29 07:55, , 9F
非遞迴的答案很簡單,這裡地方不夠寫了... XD
02/29 07:55, 9F

02/29 10:46, , 10F
關於遞迴,我覺得就像是變數容量一樣的限制, 在限定範圍中
02/29 10:46, 10F

02/29 10:47, , 11F
不會是問題. stack overflow 和 buffer overflow,都不是
02/29 10:47, 11F

02/29 10:48, , 12F
靠著一開始寫一二行程式碼就可以徹底避開.
02/29 10:48, 12F
文章代碼(AID): #1FIwbg1w (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1FIwbg1w (Soft_Job)