Re: [討論] 面試遇到的考題
※ 引述《changyuheng (張昱珩)》之銘言:
: 加碼一題:
: 給任一有限長度整數數列,
: 求以特定方法取出其中數字加總所能獲得的極大值。
: 取法條件限制:
: 最多連續取 2 個數,亦即不得連續取 3 個數。
: 例:
: 2, 1, 9, 5, 2, 0, 1, 3, 4
: 可以下列方法取出數字:
: 1) 2, 1, 5, 2, 1, 3
: 2) 2, 1, 2, 0, 4
: 不可以下列方法取出數字:
: 1) 2, 1, 9, 2, 0, 3, 4
看不太出來這題是要考什麼 @@
好像就直接算而已。
// 喝完一瓶紅酒剛睡醒頭有點痛的爛 code
// c style, 可能不能跑...XD
int[] arr = {/* 管它是什麼 */};
int[] pos = {0, 0}, mpos = {0, 0};
int i, j, max, curr;
// 需要的話這裡先判斷 arr 是不是空的
max = arr[0];
for (i = 0; i < arr.length; i++) {
curr = arr[i]; // 直接改掉 curr 跟 pos
pos[0] = pos[1] = i;
if (curr > 0) { // 目前數為正才考慮要不要加上下一個
j = i+1;
if (j < arr.length // 後一個不為正就忽略
&& arr[j] > 0) // 不然就給它加下去
curr += arr[j];
pos[1] = j;
}
}
if (curr > max) { // 比大小, 更新
mpos[0] = pos[0];
mpos[1] = pos[1];
max = curr;
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.148.44
※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1405117016.A.1D3.html
→
07/12 10:05, , 1F
07/12 10:05, 1F
→
07/12 12:52, , 2F
07/12 12:52, 2F
推
07/12 15:32, , 3F
07/12 15:32, 3F
推
07/12 15:51, , 4F
07/12 15:51, 4F
→
07/12 17:15, , 5F
07/12 17:15, 5F
推
07/12 19:14, , 6F
07/12 19:14, 6F
→
07/12 20:06, , 7F
07/12 20:06, 7F
→
07/12 20:40, , 8F
07/12 20:40, 8F
→
07/12 20:41, , 9F
07/12 20:41, 9F
→
07/12 20:41, , 10F
07/12 20:41, 10F
→
07/12 23:09, , 11F
07/12 23:09, 11F
→
07/12 23:18, , 12F
07/12 23:18, 12F
推
07/13 00:54, , 13F
07/13 00:54, 13F
→
07/13 00:54, , 14F
07/13 00:54, 14F
→
07/13 00:54, , 15F
07/13 00:54, 15F
→
07/13 00:54, , 16F
07/13 00:54, 16F
→
07/13 00:54, , 17F
07/13 00:54, 17F
→
07/13 00:54, , 18F
07/13 00:54, 18F
→
07/13 03:25, , 19F
07/13 03:25, 19F
→
07/13 03:26, , 20F
07/13 03:26, 20F
→
07/13 03:34, , 21F
07/13 03:34, 21F
推
07/13 10:37, , 22F
07/13 10:37, 22F
→
07/13 12:25, , 23F
07/13 12:25, 23F
推
07/13 12:56, , 24F
07/13 12:56, 24F
→
07/13 15:37, , 25F
07/13 15:37, 25F
討論串 (同標題文章)