码迷,mamicode.com
首页 > 编程语言 > 详细

题目:返回一个一维循环数组中最大子数组的和

时间:2015-04-16 01:09:14      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
#include <ctime>
#define N 10
using namespace std;

int maxxunhuan(int array[N] , int n){
   int i,j = 0,m,c = 0;
   int sum = array[0],b = 0,max = 0;
   for(j = 0;j < n;j++){                           
       b = 0;
      for(i = j;i < n;i++){
          if(i < n-1){
           if(b > 0){
               b += array[i];
               m = i;
           }
           else
               b = array[i];
           if(b > sum)
               sum = b;
          }
         if(i == n-1){
           b = b + array[i];
           for(c = 0;c < j;c++){
               if(b > 0)
                   b += array[c];
               else
                   b = array[c];
               if(b > sum)
                   sum = b;
               }
         }
      }
       if(sum >max)
           max = sum;
   }
   return sum;
}

int main(){
   int array[N];
   int i;
   memset(array,0,sizeof(array));                       //初始化一维数组
   cout<<"随机生成的一维数组为的:"<<endl;
   srand((unsigned)time(0));
   for(i = 0;i < N;i++){
       array[i] = rand()%25-10;
       cout<<array[i]<<\t;
   }
   cout<<"最大循环子数组为:"<<endl;
   cout<<maxxunhuan(array , N);
   return 0;
}

 

 

技术分享技术分享

 

编程思想:

用srand随机生成一维数组。

如:1 , 14 ,  -9 ,  -1 , 6 , 6, -2, 3, -9,  4

第一次循环是从1 , 14 ,  -9 ,  -1 , 6 , 6, -2, 3, -9,  4

第二次循环是从14 ,  -9 ,  -1 , 6 , 6, -2, 3, -9,  4, 1

第三次循环是从-9 ,  -1 , 6 , 6, -2, 3, -9,  4, 1,   14

。。。。

第n次循环是从。。。

用变量j来控制循环的次数,有n个数就有n个循环。

在每次循环中,参考返回一维数组最大子数组的方法,求出每一次循环中的最大子数组sum,然后用max来表示总循环中最大的那个子数组

 

时间复杂度o(n2).

题目:返回一个一维循环数组中最大子数组的和

标签:

原文地址:http://www.cnblogs.com/laozhanghahaha/p/4430528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!