您的位置:首页 > 其它

返回一个整数数组中最大子数组的和

2015-03-23 17:55 183 查看
设计思想

首先确定生成数值的范围,然后生成随机数存入数组,用两个for循环来检测子数组的和,定义一个变量保存最大子数组的和。

源程序代码

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

void main()

{

int a[20],b,c,d=0,i,j,k,t=-100,o=-100,x,y;

cout<<"请输入数值范围:"<<endl;

cin>>b>>c;

cout<<"生成数组为:"<<endl;

srand(unsigned(time(0)));

for (i=0;i<20;i++)

{

a[i]=rand()%(c-b+1)+b;

cout<<a[i]<<" ";

}

for (i=0;i<20;i++)

{

for (j=i;j<20;j++)

{

d=0;

for (k=i;k<=j;k++)

{

d=d+a[k];

}

if (d>t) {t=d;x=i;y=j;}

}

if (t>o) o=t;

}

cout<<endl<<"最大子数组的和:"<<endl;

for (i=x;i<=y;i++)

{

if (a[i]>=0)

{

cout<<a[i];

}

else cout<<"("<<a[i]<<")";

if (i!=y) cout<<"+";

else cout<<"=";

}

cout<<o<<endl;

}

运行结果截图



编程总结

功能可以实现,但是时间复杂度较高。

项目计划总结





时间日志记录





缺陷日志记录



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: