• 数组题目小计(1)


    终于快过完二柱的四则运算题目了,数组起头了

    题目:返回一个整数数组中最大子数组的和。 要求: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n) 发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。

    吸取教训,先整理好思路再进行编写

         首先想到了很笨的方法,定义一个数组a用来存放子数组含1,2,3...个元素时的最大值,然后分别计算从a[0]开始元素子数组含(1~数组最大值)的和,再在数组a中进行比较找出最大值,后来又想出一个看似稍微简化一点的方法:依次找到数组的最大元素、次大元素...最小元素,找到的同时进行子数组的求和,和的最大值再放入数组a中(经过检验好像比一开始想出来的方法难),时间复杂度先不考虑(已经嵌套好几层括号o(╯□╰)o)

         ***************************************************************************************************************************

    嵌套关系有点混乱了,能出来一个元素和两个元素子数组的和最大值,改了又出不来了,附上代码,脑袋已经乱了,明天理清楚继续,好像错误是未初始化,而且少了东西,

    ~~~~(>_<)~~~~

    #include<iostream>
    using namespace std;
    int Max(int a[100], int i, int num);
    int main()
    {
        cout << "请输入数组元素个数:";
        int num;
        cin >> num;
        cout << "请输入数组元素:";
        int array_[100],i,j,far,k=0;
        int a[100];
        for (i = 0; i < num; i++)
            cin >> array_[i];
        //从前到后依次求子数组和的最大值
        for (i = 0; i < num; i++)    
        {
            for (far = 0; far < num - i; far++)    //定义到计算元素的距离(含几个元素的子数组)
            {
                for (j = i; j < i + far; j++)    //加的次数
                {
                    int m=0;
                    m = m + array_[j];    //m存放子数组的和
                    int a[100];
                }
            }
        }
        cout << Max(a, k, i*i+i) << " ";
        return 0;
    }
    //求数组最大值
    int Max(int a[100],int i,int num)
    {
        int M=a[0];
        for (i = 0; i < num; i++)
        {
            if (a[i] > M)
                M = a[i];
        }
        return M;
    }
  • 相关阅读:
    IP报头结构
    C#组件项目设置与开发应用范例
    UDP数据报协议
    WOW 各等级属性换算表
    清理SQLSERVER日志
    正则表达式匹配EXCEL地址字符串
    TCP数据段格式
    MAC地址结构
    (转载) Delphi中打印条码的方法
    为了使用uart2, 发现6252中define了 SCCB_SERIAL_CLK_PIN 值为 22, 为了避免冲突, 手动修改其值为 23
  • 原文地址:https://www.cnblogs.com/brucekun/p/5303779.html
Copyright © 2020-2023  润新知