面试训练子数组最大和

来源:互联网 发布:车臣战争知乎 编辑:程序博客网 时间:2024/05/22 07:50

这道题目 在编程珠玑里面有。

就是累加和呗,和小于0不加,>0加。当然这里出现个问题 如果都为负数,那么最大和是多少呢

我的想法就是 一个都不要的话,和为0吧。

哦,失败啊,这里我还少了一个重要的性质

如果加了当前的数,和小于当前的数,那么我们把当前和置为 其中一个大的数。

代码跑一遍

#include "stdio.h"int main(){int data[]={1,-2,3,10,-4,7,2,-5};int sum=0;int i;int len=sizeof(data)/sizeof(data[0]);int greatest=0x80000000;unsigned int a=5;int b=-1;for(i=0;i<len;i++){if(sum+data[i]<data[i])sum=data[i];elsesum+=data[i];if(sum>greatest)greatest =sum;}printf("%d\n",greatest);}




原创粉丝点击