2011实习 笔试淘宝和阿里云的最后的编程题都是求最大子串和的问题。当时没有写出来,回来后百度了一下。
#include <stdio.h>
int main(int argc, char *argv[])
{
//printf("Hello, world\n");
int i,temp,max,j;
int num[10]={-11,22,33,-8,2,6,-10,7,9,-1};
for(i=0,temp=0,max=0;i<10;i++){
temp+=num[i];
if(temp>=0)
{
if(temp>max)
max=temp;
}
else
temp=0;
}
printf("%d\n",max);
return 0;
}
这个思路比较清晰。
还看到另一个版本的,没有这个版本的优化,用了两重循环。