• 数组题目小计(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;
    }
  • 相关阅读:
    2016计算机专业考研:c++大学教程第二版目录(下)
    2016考研计算机考研备考书籍推荐
    2014年计算机考研真题重点选择题部分真题及解析
    2016计算机考研:数据结构常用算法精析
    2015考研计算机专业基础综合试题真题及答案(1)
    java串讲之String 如何定义字符串对象
    WindowsService
    sql 将datetime类型转化为指定格式的字符串
    C# 利用SMTP异步发送邮件
    Visual Studio
  • 原文地址:https://www.cnblogs.com/brucekun/p/5303779.html
Copyright © 2020-2023  润新知