题目如下:
给定N个连续的整数序列,试求前多少项和是最大的?
数据结构题,采用在线处理方法(在网上学习所得,再此记录)
思路:从第一个数开始加起,如果后面的数使得前面的数为负数,则在此处重新开始计算,否则一直往后,直到找到最大的那个。
int main(){
int a[6] = {1,-1,3,4,-10,6};
int max = 0, thismax = 0;
int i;
for(i = 0 ; i < 6; i ++){
thismax += a[i];
if (thismax > max)
{
max = thismax;
}else if (thismax < 0)
{
thismax = 0;
}
}
printf("\n");
printf("%d",max);
}