zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的和(加强版)

    题目:返回一个整数数组中最大子数组的和

    要求:让数组手尾相连,构成一个环,同时返回最大子数组的位置

    设计思想

    1、将环断开,成为一条线,分析这条线上的最大子数组,找到最大子数组,便可以找到最大子数组的起点和终点。

    2、然后将终点看作起点,将起点看作终点,将线连成环,在进行寻找最大子数组(寻找时不算上起点和终点)。

    3、最后将先后找到的两个最大子数组连在一起就形成了这个整数组环的最大子数组,然后将记录的起点和终点输出出来,返回最大子数组的位置。

    源代码:

    #include<iostream>
    #define n 100
    using namespace std;
    void main()
    {
        int a[n], b[n][n];
        int length, i, j, w = 0, p = 0, q = 0, temp, m;
        cout << "输入随机整数" << endl;
        for (length = 0;;)
        {
            cin >> a[length];
            length++;
            if (getchar() == '
    ')
            {
                break;
            }
        }
        cout << "这个数组的长度为:" << length << endl;
        //求子数组
        for (i = 0; i<length; i++)//两次循环,进行排除法,判断每个数所构成的最大子数组
        {
            m = i;
            w = 0;
            j = 0;
            while (j <= length - 1)
            {
                w += a[m];
                b[i][j] = w;
                m++;
                if (m>length - 1)
                {
                    m = 0;
                }
                j++;
            }
        }
     
        temp = b[0][0];
        for (i = 0; i<length; i++)//将每个数对应的最大子数组进行判断,最后得到整个整数组的最大子数组
        {
            for (j = 0; j<length; j++)
            {
                if (b[i][j]>temp)
                {
                    temp = b[i][j];
                    p = i;
                    q = j;
                }
            }
        }
     
        cout << "最大子数组的值为:" << temp << endl;
        cout << "最大子数组中元素的下标位子置:" << endl;
        i = 0;
        while (i <= q)
        {
            cout << p << "  ";
            p++;
            if (p >= length)
            {
                p = 0;
            }
            i++;
        }
     
        cout << endl;
    }

    测试结果

    总结:本次试验主要是运用环插入的思想来做的,需要充分考虑到连接的问题。所以我们使用分别比较不同的两个起点的对大数组来实现的。

    队友:吕广浩  网址:http://www.cnblogs.com/lvstudy/

  • 相关阅读:
    排球计分的完善
    排球计分(总结)
    排球计分(八)用户注册、验证
    排球计分(七)看一下运行结果
    排球计分(六)view的实现
    排球计分(五)Controller的实现
    排球计分(四)Model的实现
    排球计分(三)架构概要设计
    排球计分(二)需求分析和数据库设计
    排球计分程序重构(六)
  • 原文地址:https://www.cnblogs.com/apan008/p/5326194.html
Copyright © 2011-2022 走看看