课堂练习:返回一个整数数组中最大子数组的和
2016-04-06 18:24
197 查看
题目要求:输入一个整型数组,数组里有正数也有负数
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和
求所有子数组的和的最大值,要求时间复杂度为O(n)
设计思想
求出所有连续子数组的和,然后进行比较。用array[0]来作为max的初始值.数组里有正数有负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后的和。
源代码
结果截图:
总结
编程要善于思考,有了思路再去写,免得一直处于写了再改的模式,重在分析
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和
求所有子数组的和的最大值,要求时间复杂度为O(n)
设计思想
求出所有连续子数组的和,然后进行比较。用array[0]来作为max的初始值.数组里有正数有负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后的和。
源代码
#include<iostream> using namespace std; int main() { int i,n,sum=0; int array[1000]; cout<<"请输入数组的长度:"<<endl; cin>>n; int max=array[0]; cout<<"请输入数组内的数"<<endl; for(i=0;i<n;i++) { cin>>array[i]; } for(i=0;i<n;i++) { if(sum<=0) { sum=array[i]; } else { sum=sum+array[i]; } if(sum>max) { max=sum; } } cout<<"子数组和的最大值为"<<max<<endl; return 0; }
结果截图:
总结
编程要善于思考,有了思路再去写,免得一直处于写了再改的模式,重在分析
相关文章推荐
- 裸机初体验
- 发现可高速缓存的 SSL 页面
- HNACM(八)F-Distribution
- vs调试快捷键
- lsof 查看端口、程序以及开启文件的进程
- Java Socket 通信(同步阻塞式I/O)
- fork之后父子进程的文件描述符
- PHP JSON_ENCODE 不转义中文汉字的方法
- Java之趣味编程结婚问题
- 水骑士团队介绍
- unity 5.3 工业模型的细节展开功能实现
- Struts2 Action访问Servlet API
- Atitit..css的体系结构
- hibernate的增加、修改方法不生效,查询正常【事务没有拦截到导致的】
- Android-耗电量测试
- springMVC环境搭建
- opencv轮廓检测之椭圆检测-----算法篇(6)--ACTIVE CONTOURS
- 使用命令编译为jar包
- Atitit..css的体系结构
- Atitit..css的体系结构