首页 > 编程语言 > 详细

数组2

时间:2016-03-26 15:37:25      阅读:195      评论:0      收藏:0      [点我收藏+]
//禹慧慧 吕兰兰 2016.3.26
//将数组看成环形,首尾相接,数组元素个数最多1000,数组元素为32位,计算最大子数组的元素之和
#include<iostream>
#include<time.h>
#define RAND16 ((rand()<<1) + (rand()&1))
using namespace std;
int main()
{   
    srand(time(0));
    _int32 Array_a[2000];
    long long Array_max[1000];//存放每个子数组的最大数组之和
    long long arrayOfmax;//存放最后结果最大数
    int N;//随机生成数组元素个数
    N=rand()%1000+1;
    cout<<"数组元素个数为:"<<N<<endl;
    for(int i=0;i<N;i++)
    {
        Array_a[i]=(RAND16 << 16) + RAND16;//生成32位数组元素
    }
    //将数组复制一遍加宽数组的长度
    for(int i=0;i<N;i++)
    {
        Array_a[N+i]=Array_a[i];
    }
    for(int i=0;i<N;i++)
    {
        cout<<Array_a[i]<<"  ";
        if((i+1)%5==0){cout<<endl;}
    }
    cout<<endl;
    //求每个圆环的N个数组的最大的子数组
    for(int j=0;j<N;j++)
    {
        
        long long max=0;
        long long sum=0;
        for(int i=j;i<(N+j);i++)
       {
          sum+=Array_a[i];//将每位求和赋给sum
           if(Array_a[i]>=0)
          {
             if(max<sum)
            {
               max=sum;
            }

          }
             if(sum<0)
            {
               sum=0;
             }
       }
        if(max==0)
        {
            max=Array_a[0];
           for(int i=j;i<N+j;i++)
          {
            if(Array_a[i]>max)
             max=Array_a[i];
          }
        }
        Array_max[j]=max;    
  }
    cout<<"The max array is:";
    arrayOfmax=Array_max[0];
    for(int k=1;k<N;k++)
    { 
        if(arrayOfmax<Array_max[k])
        {
            arrayOfmax=Array_max[k];
        }
    }
    cout<<arrayOfmax<<endl;

return 0;    
}
技术分享
技术分享

 组成员吕兰兰网址:http://www.cnblogs.com/lvlan/

数组2

原文:http://www.cnblogs.com/yhhzxcvbnm/p/5322985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!