返回整数数组最大子数组
Posted miniarcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回整数数组最大子数组相关的知识,希望对你有一定的参考价值。
应王老师要求,和李子木同学共同完成编程任务。
要求程序必须能处理1000 个元素,每个元素是int32 类型的;输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
int main()
{
int i;
int a[10000];
int max = 0;
int b = 0;
{
int i;
int a[10000];
int max = 0;
int b = 0;
srand(time(NULL));
cout<<"数组为:"<<endl;
for (i = 0; i<10000; i++)
{
a[i] = rand()*4294967296 ;
}
for (i = 0; i<10000; i++)
{
cout << a[i] << ‘ ‘;
}
cout << endl;
cout<<"数组为:"<<endl;
for (i = 0; i<10000; i++)
{
a[i] = rand()*4294967296 ;
}
for (i = 0; i<10000; i++)
{
cout << a[i] << ‘ ‘;
}
cout << endl;
for (i = 0; i < 10000; i++)
{
b += a[i];
if (b < 0)
b = 0;
if (b > max)
max = b;
}
if (max == 0)
{
max = a[0];
for (i = 0; i < 10000; i++)
{
if (max < a[i])
{
max = a[i];
}
}
}
cout <<"最大子数组为:"<< max << endl;
system("pause");
return 0;
}
{
b += a[i];
if (b < 0)
b = 0;
if (b > max)
max = b;
}
if (max == 0)
{
max = a[0];
for (i = 0; i < 10000; i++)
{
if (max < a[i])
{
max = a[i];
}
}
}
cout <<"最大子数组为:"<< max << endl;
system("pause");
return 0;
}
截图:
感想:
有的时候程序运行结果会是都是0,这好像是因为数据过多导致程序出错,数据长度减少就可以解决了。程序比较难,需要多加考虑。
附上和李子木同学的合照。。
以上是关于返回整数数组最大子数组的主要内容,如果未能解决你的问题,请参考以下文章