zoukankan      html  css  js  c++  java
  • 返回一个循环整数组最大子数组和

    任务要求: 1、输入一个整形数组,数组里有正数也有负数。

    2、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

    3、如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。

    4、同时返回最大子数组的位置。

    5、求所有子数组的和的最大值。
     
    实验思路:
    首先分为两种情况,随机数组和自己输入数组,定义数组长度获取-n到n范围内的随机数或输入值。构造一个新数组,新数组是由两遍输入的数组构成,然后按照一维数组的求法求出,加上限制条件,求和时数组的长度必须小于输入数组的个数。
    出现问题:
    1、在循环过程中把自己绕进去了。
    2、最开始对随机数取太多导致运行时间太长。
    3、在分析循环数组时遇到麻烦耗费很多时间才理清思路。
    实验代码:
    复制代码
    #include <iostream>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;
    
    int main()
    {
        int i,j;
        int a[10];
        int c[19];
        int max = 0;
        int b = 0;
    
        srand(time(NULL));
        cout<<"数组为:"<<endl;
        for (i = 0; i<10; i++)
        {
            a[i] = rand()%21-10;
        }
        for (i = 0; i<10; i++)
        {
            cout << a[i] << '	';
        }
        cout << endl;
        for (i = 0; i < 10; i++)
        {
            c[j]=a[i];
        }
        for (i = 0; i < 9; i++)
        {
            c[j+10]=a[i];
        }
        for (j = 0; j < 10; j++)
        {
            b += c[j];
            if (b < 0)
                b = 0;
            if (b > max)
                max = b;
        }
        if (max == 0)
        {
            max = c[0];
            for (j = 0; j < 19; j++)
            {
                if (max < c[j])
                {
                    max = c[j];
                }
            }    
        }
        cout <<"最大子数组为:"<< max << endl;
        system("pause");
        return 0;
    }
    复制代码

    运行结果:

    实验总结:
    这个程序相对于不循环的数组求最大子数组和的关键是找到算法的限制条件,求和时数组的长度必须小于输入数组的个数。在开始编写程序时对循环结构的选择是一个问题。

    队员:侯熙磊 黄睿麒

  • 相关阅读:
    通过AI识图判断图片是否为小票
    orcl 定时器
    防止表单重复提交常规方法
    代码规范案例(ssh分页)
    jquery的ajax提交时“加载中”提示的处理方法
    利用JS弹出层实现简单的动态提示“正在加载中,请稍等...”
    jquery 排序table的列
    Java多线程与网络编程综合使用
    大型Oracle数据库设计方案(精华)
    20155307 2016-2017-2 《Java程序设计》第10周学习总结
  • 原文地址:https://www.cnblogs.com/xilei123/p/9904923.html
Copyright © 2011-2022 走看看