贪心法求求数组或者列表中最大的连续的子段和

贪心法求求数组或者列表中最大的连续的子段和

# 本题求数组或者列表中最大的连续的子段和
# 思想是如果当前和是个负数,那么还不如从下一个开始加起 
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++代码:

//思想是如果当前和是个负数,那么还不如从下一个开始加起 
#include 
int 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;
}
李兴球

李兴球的博客是Python创意编程原创博客