算法设计艺术——编程珠玑第八章
下面是书本中讲解的四个算法:
问题:求一维数组中连续子向量的最大和。
例如: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;

本文详细介绍了求解一维数组中连续子向量最大和的四种算法:简单算法、改进算法、分治算法和扫描算法,并通过代码实例展示了每种方法的实现过程,重点解析了分治算法的思路和关键步骤。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



