返回一个整数数组中最大子数组的和
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;
}
运行结果截图
编程总结
功能可以实现,但是时间复杂度较高。
项目计划总结
时间日志记录
缺陷日志记录
首先确定生成数值的范围,然后生成随机数存入数组,用两个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;
}
运行结果截图
编程总结
功能可以实现,但是时间复杂度较高。
项目计划总结
时间日志记录
缺陷日志记录
相关文章推荐
- 返回一个整数数组中最大子数组的和。
- 返回一个整数数组中最大子数组的和
- 返回一个二维整数数组中最大子数组的和5
- 软件工程课程作业(五)--返回一个整数数组中最大子数组的和(首尾相接改良版)
- 返回一个二维整数数组中最大联通子数组的和
- 返回一个整数数组中最大子数组的和(数组头尾连接)
- 返回一个二维整数数组中最大联通子数组的和
- 返回一个二维整数数组中最大联通子数组的和
- 返回一个整数数组中最大子数组的和
- 返回一个二维整数数组中最大联通子数组的和
- 返回一个整数数组中最大子数组的和
- 返回一个二维整数数组中最大联通子数组的和
- 课堂练习:返回一个整数数组中最大子数组的和
- 返回一个整数数组中最大子数组的和3
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- 课堂练习四: 返回一个整数数组中最大子数组的和。
- 返回一个整数数组中最大子数组的和
- 《返回一个整数数组中最大子数组的和》
- 返回一个二维整数数组中最大子数组的和(圆柱形)
- leetcode+华为笔试题-java实现返回一个整数数组中最大子数组的和