作者yauhh (喲)
看板Soft_Job
標題Re: [閒聊] 臉書在找人
時間Mon Feb 27 13:06:02 2012
※ 引述《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