# 本题求数组或者列表中最大的连续的子段和 # 思想是如果当前和是个负数,那么还不如从下一个开始加起 lis = [-2,1,-3,4,-1,2,1,-5,4] begin = 0 mysum = 0 for i in range(9): mysum += lis[i] length = i-begin if mysum<0: mysum = 0 begin = i print(mysum,length)
以下是C++代码:
//思想是如果当前和是个负数,那么还不如从下一个开始加起 #includeint main(){ int arr[9] = {-2,1,-3,4,-1,2,1,-5,4}; int len,begin=0,sum=0; for(int i=0;i<9;i++){ sum += arr[i]; len=i-begin; if(sum<0) { sum = 0; begin=i; } printf("sum=%d,len=%d\n",sum,len); } return 0; }
发表评论