把全部组合都找出求和,这种方法再也不说了,够无聊。直接看高端点的。编程
动态规划求解数组
直接看代码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; }
参考书籍:《编程之美》方法