推 gusion: 這個問題的分割方式,簡化來看,就是在兩 27.240.186.220 03/01 14:07
→ gusion: 個負數之間的逗號位置選一個切一刀,或者 27.240.186.220 03/01 14:07
→ gusion: 不選,所以範例中的-2和-5之間有三個逗號 27.240.186.220 03/01 14:07
→ gusion: 位置可以分割,也可以不選,因此共(3+1)種 27.240.186.220 03/01 14:07
→ gusion: 計算逗號數的方式就兩個index相減就好 27.240.186.220 03/01 14:07
→ gusion: 如果array中有很多負數也是同理,只要把兩 27.240.186.220 03/01 14:07
→ gusion: 個負數間可以切的方式數量乘起來就好 27.240.186.220 03/01 14:07
→ gusion: 例如:1, -2, 3, 4, -5, -6, 7, -8, 9 27.240.186.220 03/01 14:07
→ gusion: 共 (3+1)*(1+1)*(2+1) 種分割方式 27.240.186.220 03/01 14:07
→ gusion: 寫成code就是直接array掃一遍,掃到負數時 27.240.186.220 03/01 14:07
→ gusion: ,看跟前一個負數差多少index,加一後乘在 27.240.186.220 03/01 14:07
→ gusion: result變數應該就可 27.240.186.220 03/01 14:07
→ thumbg75446: 謝謝回答 但是是否遇到連續負數的arr 42.70.171.68 03/01 14:23
→ thumbg75446: ay就沒辦法了呢?比如說[-1,-1,-1,-1 42.70.171.68 03/01 14:23
→ thumbg75446: ,3] 42.70.171.68 03/01 14:23
推 gusion: 連續負數也可以啊,上面推文例子的-5和-6 27.240.186.220 03/01 14:48
→ gusion: 就是,兩個index差1,中間可以切一刀,或 27.240.186.220 03/01 14:48
→ gusion: 者不切,所以就是(1+1),然後跟其他段的數 27.240.186.220 03/01 14:48
→ gusion: 量乘起來就好 27.240.186.220 03/01 14:48
→ gusion: 你的例子就是(1+1)*(1+1)*(1+1),共8種 27.240.186.220 03/01 14:50
→ thumbg75446: 謝謝回覆 理解了 42.70.171.68 03/01 17:42