zoukankan      html  css  js  c++  java
  • 课堂练习2

    1.设计思想

        第一次求子数组最大和的程序存储和的时候用的二维数组不能够实现时间复杂度为O(n),然后也没什么新的思路,就从网上搜了一种算法。

        该算法是构造一个函数来返回子数组的最大和,当前面的几个数,加起来后,b<0后, 把b重新赋值,置为下一个元素,b=a[i]。 当b>sum,则更新sum=b; 若b<sum,则sum保持原值,不更新。

    2.源程序

    复制代码
    #include <iostream>
    using namespace std;
    #define N 15
    
    int max(int *a)
    {
        int sum=0,b=0;
        for(int i=0;i<N;i++)
        {
             if(b<0)
            {
                 b=a[i];
            }
            else
            {
                b+=a[i];
            }
            if(sum<b)
            {
                sum=b;
            }
        }
        return sum;
    }
    
    
    void main()
    {
        int a[N];
        cout<<"生成的数组为:";
        for(int i=0;i<N;i++) //生成数组里的随机数
       {
            a[i]=rand()%100-50;
            cout<<a[i]<<" ";
        }
        cout<<endl;
    
        cout<<"最大数组的和为:"<<max(a)<<endl;
    
    }
    复制代码

    3.结果截图

    4.总结

      很遗憾的最后没有输出子数组,对于子数组的输出没有什么思想,也从中学到了一种新的算法,希望再经过思考能够将这个问题解决的更好。

    5.工作照

    陈杰:主要进行博文的总结等

    孟祥娟:主要负责程序的编写和运行测试

  • 相关阅读:
    asp.net 自定义文本框
    单机运行k8s以及e2e
    编译k8s1.3的代码
    etcd的简单使用
    How Tencent Tests Software
    ps引发的血案
    配置IDE查看kubernetes源码
    读书笔记<<不懂带人,你就自己干到死>>
    书摘<<互联网世界观>>
    读书笔记《异类》
  • 原文地址:https://www.cnblogs.com/chenjie00/p/4387416.html
Copyright © 2011-2022 走看看