11.02-解决连续数组最大子数组和

要求:

       输入一个整形数组,数组里有整数也有负数。

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

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

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

            求所有子数组的和的最大值。

思路:循环两次,进行排除法,判断数组中每个数所构成的最大子数组,然后将数组中每个数对应的最大子数组进行判断,最后得到这个整数数组的最大子数组。

#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() == '\n')
        {
            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;
    system("pause");
}

转载于:https://www.cnblogs.com/qss520/p/9905370.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值