算法设计艺术——编程珠玑第八章
下面是书本中讲解的四个算法:
问题:求一维数组中连续子向量的最大和。
例如:a[6]={3,4,-2,-9,10,8}; 则最大连续子向量的和 为 10+8 = 18
1)解法一:简单算法
- #include <stdio.h>
- #define max(a, b) ((a)>(b)?(a):(b))
- int main()
- {
- int a[6]={3,4,-2,-9,10,8};
- int i,j,k;
- int sum=0;
- int maxsofar=0;
- for(i=0;i<6;++i)
- {
- for(j=i;j<6;++j)
- {
- sum=0;
- for(k=i;k<=j;++k)
- {
- sum+=a[k];
- }
- maxsofar=max(maxsofar,sum);
- }
- }
- printf("max=%d\n",maxsofar);
- return 0;