标签:最大子数组 最大 ace 数组 com 技术 ima use info
要求:
输入一个整形数组,数组里有整数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
如果数组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");
}


标签:最大子数组 最大 ace 数组 com 技术 ima use info
原文地址:https://www.cnblogs.com/zjk0109/p/9904229.html