求最大子序列。。

var testArr = [-1,-3,4,5,20],
    temp = 0,i, j , k ,sum = 0;
for(i=0; i<testArr.length; i++){
   
    for(j=i;j<testArr.length;j++){
        temp = 0;
        for(k=i;k<=j;k++){
           temp += testArr[k];
        }
        if(temp > sum){
           sum = temp;
        }
    }

}
console.dir(sum);
29

 

(function(){
   var testArr = [-1,-3,4,5,20],
       temp = 0,i, j , k ,sum=0;
    for(i=0; i<testArr.length; i++){
       for(j=0;j<i;j++){
         temp = 0;
         for(k=j;k<=i;k++){
           temp += testArr[k];
           if(temp > sum){
             sum = temp;
           }
         }
      }
   }
   console.dir(sum);
})() 

 

   var testArr = [-1,-3,4,5,20,-30],
       temp = 0,i, j , k ,sum=0;
    for(i=0; i<testArr.length; i++){
      if(testArr[i] <0) continue; 
     temp = 0;
       for(j=i;j<testArr.length;j++){
          temp += testArr[j];
          if(temp > sum){
        sum = temp; 
      }else if(temp <=0){
             i = j;
             temp = 0;
          }
       }
   }
   console.dir(sum);

 

var Arr = [-3,2,4,10,-19],
    i , temp=0 ,sum = 0;
for( i=0; i<Arr.length; i++ ) {  
        temp += Arr[i];  
        if(temp>sum) {  
            sum = temp;  
        } else if( temp>0 ) {  
            
        } else if( temp < 0 ) {  
            temp = 0;  
        }  
    }  
console.dir(sum);

思想就是当几个数累加为0或为负数时 这几个数一定不是最大序列里的数。碰到后直接把中间变量赋为0

posted @ 2013-03-19 21:51  ﹏Sakura  阅读(148)  评论(0编辑  收藏  举报