返回一个整数组中最大一个子数组的和
2018-10-14 16:30 改完bug就结婚 阅读(237) 评论(0) 编辑 收藏 举报
2. 设计思路:
先使用sranda(time(null))函数随机产生一千个数,对数组进行遍历从左边第一个数向右相加令这个和值为B当B小于0时令B赋值为0。令结果赋值为MAX当MAX为0时依次比较将最大的数赋值给MAX。
3源代码:
#include <iostream>
#include<stdlib.h> using namespace std;
#include<time.h> #define MAX 1000;
int main()
{ int i; int a[10000];
int max = 0;
int b = 0;
srand(time(NULL));
cout<<"请输入数组整数个数:"<<endl;
for (i = 0; i<1000; i++)
{
a[i] = rand();
}
for (i = 0; i<1000; i++)
{
cout << a[i] << '\t';
}
cout << endl;
for (i = 0; i < 1000; i++)
{
b = a[i]+b;
if (b < 0)
b = 0;
if (b > max)
max = b;
}
if (max == 0)
{
max = a[0];
for (i = 0; i < 1000; i++)
{
if (max < a[i])
{
max = a[i];
}
}
}
cout <<"最大子数组的和:"<< max << endl; system("pause"); return 0;
}
程序运行结果
总结
我们之前做的数组长度我们在测试时一般都填得很小,并且给每个元素的赋值也不超过两位数,甚至是固定了,都是为了方便直接找到一个和是最大的子数组,这都不能测试出程序哪里有不足,无论是数量还是数值的大小。通过随机产生的1000个数据我们发现了问题。因为已经把时间复杂度的概念给彻底忘了,这个程序也就没有考虑。因此我们应该对事件的复杂度有足够的重视。
程序分析,编写代码:李志鹏
代码检核:刘逸帆