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

最大数组BT

时间:2018-10-14 21:03:10      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:判断   数组   int   include   分享图片   输入   总结   时间   连续   

一、题目:返回一个整数组中的最大子数组的和(加强版)

二、课题要求:

要求程序能够处理1000个元素;

没个元素是int32类型的;

输入一个整形数组,数组里有正数也有负数;

数组中连续的一个或多个整数组成一个子数组,没个子数组都有一和;

求所有子数组的和的最大值,要求时间复杂度为O(n)。

三、设计思路

把数组定义为1000个元素,并定义为int32类型,当我们需要越界时需要将数组整体乘上2^32=4294967296。

四、程序代码

#include <iostream>
 #include<stdlib.h>
 #include<time.h>
 using namespace std;
 
 int main()
 {
     int i;
    int a[1000];
     int max = 0;
     int b = 0;
 
    srand(time(NULL));
     cout<<"生成整数组:"<<endl;
    for (i = 0; i<1000; i++)
     {
         a[i] = rand();
     }
     for (i = 0; i<1000; i++)
     {
         cout << a[i] << \t;
     }
     cout << endl;
 
     for (i = 0; i < 1000; i++)
     {
         b += a[i];
         if (b < 0)
             b = 0;
         if (b > max)
             max = b;
     }
     if (max == 0)
     {
         max = a[0];
         for (i = 0; i < 1000; i++)
         {
             if (max < a[i])
             {
                max = a[i];
             }
         }    
     }
     cout <<"最大子数组:"<< max << endl;
     return 0;
 }

当需要越界时,数组乘4294967296

a[i] = rand()*4294967296;

五、运行结果

①正常运行

技术分享图片

②越界运行

技术分享图片

 

六、收获总结

经过这次课题设计,对计算机算法又有了一个深层次的认识,通过for语句循环,以及if语句判断是否符合程序需求。

七、时间记录日志

技术分享图片

八、组员图片

组员博客:姬浩桐:http://www.cnblogs.com/hyjht/

组员博客:祁    军:http://www.cnblogs.com/qijun1120/技术分享图片

 

最大数组BT

标签:判断   数组   int   include   分享图片   输入   总结   时间   连续   

原文地址:https://www.cnblogs.com/hyjht/p/9787501.html

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