算法导论 练习题 4.1-5

来源:互联网 发布:通勤车自行车推荐知乎 编辑:程序博客网 时间:2024/05/24 06:28
#include <stdio.h>#include <limits.h>#define LEN 16int sums[LEN];//计算累加和,如果前面累加到负数,则重新开始累加void init(int a[]){sums[0]=a[0];for(int i=1;i<LEN;i++){if(sums[i-1]<0){sums[i]=a[i];}else{sums[i]=sums[i-1]+a[i];}}}int main(){int a[16]={13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7};init(a);int max=INT_MIN,left=0,right=0;//找累加和最大的项for(int i=0;i<LEN;i++){if(sums[i]>max){max=sums[i];right=i;}}//找right前面最小累加和为正的项left=right;while(sums[left]>0){left--;}left++;printf("%d,%d,%d",left,right,max);getchar();}

0 0
原创粉丝点击