- 论坛徽章:
- 1
|
求一个数组中最大的相邻元素之和
aero言之有理,这样的话可以把end1也去掉
- void MaxSum(int *ary, int n)
- {
- int i, start=0, end=0, start1=0, max, sum;
- max=ary[0];
- for(i=1;i<n && ary[i]<=0;i++)
- {
- if(ary[i]>;max)
- {
- max=ary[i];
- start=end=i;
- }
- }
- sum = max >; 0 ? max : 0 ;
- for(; i<n; i++) {
- if(ary[i] >; 0 && sum <= 0)
- start1 = i;
- sum += ary[i];
- if (sum >; max) {
- start = start1;
- end = i;
- max = sum;
- }
- else if(sum < 0)
- sum = 0;
- }
- printf("start %d, end %d, sum %d\n", start, end, max);
- }
- main()
- {
- int m[10] = {2,3,-6,3,4,3,-2,5,2,-3};
- MaxSum(m, 10);
- }
复制代码 |
|