返回整数数组中最大子数组的值(数组首尾相连)

应王老师要求,返回子数组的作业又来啦!这次的数组是首尾相连的

预计时间:两小时

实际时间:周四上课15分钟+周日13:20-14:30

先说一下我的想法,之前的作业都是可以直接遍历整个数组,因为数组的长度是一定的,循环结束后就可以获得到所有子数组。但是这次作业的前提是数组首尾相连,遍历整个数组是无法结束的。所以我可以先想象环状的数组断开,利用二维数组把断开数组的每个数被包含的子数组再次存放,再去遍历求子数组的和,那么接下来的程序就和之前的一样了。

程序:

#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;
}
原文地址:https://www.cnblogs.com/miniarcher/p/9904152.html