看板 Soft_Job 關於我們 聯絡資訊
※ 引述《Baudelaire (起坐不能平。)》之銘言: : 推 danielguo:話說 Amazon AWS 在招不少人, 有興趣的可以上網站看 02/26 15:58 : AWS很操,沒有決心不要亂丟,半夜三點會被pager叫起來尿尿的...。 : 不過如果有興趣到Amazon的話,可以私底下丟resume給我。 : --- : 另外這題應該是很基本的題目, : 想丟履歷的試看看能不能儘快寫出來。 : 我的答案是這個, : 如果不要sequeuce,要combination的話, : 可以把result改成counter。 : static void sumupArray(int [] array, int num, String result) : { : if (num == 0) : { : System.out.println(result); : return; : } : if (num < 0) : { : return; : } : for (int i : array) : { : sumupArray(array, num-i, result+ " " + i); : } : return; : } 你這作法框架完整,不過遞迴與for迴圈混雜造成一些誤導,其實只一味 把遇到的數字扣掉而已. 如果改成下列這樣,就是很好的backtracking: static void sumupArray(Set1 scores, int num, String result) { if (num == 0 || scores.isEmpty()) { System.out.println(result); return; } if (num < 0) return; //for (int i : array) { Set1 scores1 = scores.removeFirst(); //sumupArray(scores1, num-i, result+ " " + i); sumupArray(scores1, num - scores.first() , result+ " " + scores.first()); sumupArray(scores1, num, result); //} } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.65.204 ※ 編輯: yauhh 來自: 61.231.65.204 (02/27 13:15)
ledia:這一樣有 1+2 2+1 的問題 02/27 13:09
yauhh:1+2 2+1問題? 02/27 13:16
yauhh:哦,我了解了,可是如果本來的分數就有 1,2,2,1 這樣重複定義, 02/27 13:20
yauhh:你不可以把兩個1當作同一個. 02/27 13:20
ledia:我看到 for 迴圈砍掉前的版本... XD 02/27 13:20
yauhh:沒辦法,寫完還想到加了那個迴圈本來就怪怪的 02/27 13:24
gmoz:這幾篇長知識 02/27 18:36