zoukankan      html  css  js  c++  java
  • 最大数组BT

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

    二、课题要求:

    要求程序能够处理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] << '	';
         }
         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/

  • 相关阅读:
    CLR via C#(11)-无参属性、索引器
    CLR via C#(10)-参数
    C#委托的介绍(delegate、Action、Func、predicate)
    MVC3使用Unity实现接口自动注册
    CLR via C#(09)-扩展方法
    CLR via C#(08)-操作符
    CLR via C#(07)-静态类,分部类
    CLR via C#(06)- 构造器
    VS2010几款超赞的扩展辅助工具总结
    web前端开发随手笔记
  • 原文地址:https://www.cnblogs.com/hyjht/p/9787501.html
Copyright © 2011-2022 走看看