把全部組合都找出求和,這種方法再也不說了,夠無聊。直接看高端點的。編程
動態規劃求解數組
直接看代碼code
int max(int x, int y) { return x>y?x:y; } int maxAdd(int a[], int n) { int * psum = (int *)malloc(sizeof(int) * n); int * pmax = (int *)malloc(sizeof(int) * n); psum[n-1] = pmax[n-1] = a[n-1]; for(int i = n-2; i>=0; i--) { psum[i] = max(a[i],a[i] + psum[i+1]); pmax[i] = max(pmax[i+1],psum[i]); } int maxV = pmax[0]; free(psum); free(pmax); return maxV; }
額,,,真不知道怎麼解釋。
class
上面用到了兩個數組,實際上是浪費了很大的空間的。書籍
int max(int x, int y) { return x>y?x:y; } int maxAdd(int a[], int n) { int sumV,maxV; sumV = maxV = a[n-1]; for(int i = n-2; i>=0; i--) { sumV = max(a[i],a[i] + sumV); maxV = max(sumV,maxV); } return maxV; }
參考書籍:《編程之美》方法