【題目描述】
Givenndistinct positive integers, integerk(k<=n) and a numbertarget.
Findknumbers where sum is target. Calculate how many solutions there are?
給定n個不同的正整數,整數k(k < = n)以及一個目標數字。
在這n個數裏面找出K個數,使得這K個數的和等於目標數字,求問有多少種方案?
【題目鏈接】
www.lintcode.com/en/problem/k-sum/
【題目解析】
1. 如果你從左往右按列計算,每一列會被重複地加總,就會有重複計算。我們可以想象一下,len = 0爲上表,len = 1爲下表。
現在我們只有一個表,就是下面這個(因爲第一個維度被取消了),現在如果你從左往右計算,被sum的區域會被填掉,覆蓋
len = 0 那張表留下的值,下一個值的計算就不會準確了。
2. 或者如果你逐行計算,也是不可以的。因爲你也是把生成D[j][t](在圖裏寫的是D[i][j])的被sum的區域覆蓋,也會造成結果不準確。
3. 所以,只要我們逐列計算,並且順序是從右往左,即使我們只有一個二維表,我們的被sum區域也可以保持潔淨,從空間角度來想,
就相當於從len=0那張表中取值。
【參考答案】
www.jiuzhang.com/solutions/k-sum/