最大子段和
来源:互联网 发布:场地租用费淘宝 编辑:程序博客网 时间:2024/05/18 10:58
要求:给一个数组如:-1,12,9,-5,3,7,-11,7,是求取其的一个子段,要求子段和最大,要求输出最大和,子段的开始位置,子段的结束位置。
思路:暴力法可以做,而且代码也很简单,只有两个循环,但是对于元素比较多的数组时间复杂度会很大。
过程:
c++代码:
#include <iostream>using namespace std;int main(){ int *num,n,i,*this_sum,sum=0,best_i=0,best_j=0; cout<<"Please cin the length of num:"; cin>>n; num=new int[n+1]; this_sum=new int[n+1]; cout<<"Please cin the num:"; for(i=1;i<=n;i++) cin>>num[i]; this_sum[0]=0; if(num[1]>=0) //如果没有这一步那么当起始位置为1时结果会输出起始位置为0 best_i=1; for(i=1;i<=n;i++) { if(this_sum[i-1]>=0) //因为这一步的判断条件为>=0,所以要增加上一步best_i置1的情况 this_sum[i]=this_sum[i-1]+num[i]; else { this_sum[i]=num[i]; if(this_sum[i]>sum) //在这种情况下只有当当前的this_sum比sum大时才能真正的改变当前起始位置 best_i=i; } if(this_sum[i]>sum) { best_j=i; //只有当当前的this_sum比sum大时才能改变当前best_j sum=this_sum[i]; } } cout<<"best_sum:"<<sum<<" best_i:"<<best_i<<" best_j:"<<best_j<<endl; return 0;}
0 0
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- “最大子段和”
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 最大子段和
- 有关chrome dev的使用
- Windows系统 安装Python扩展包时出现“Misrosoft Visual C++ 9.0 is required / Unable to find vcvarsall.bat”的解决办法
- Android项目中集成React Native
- 解决Android手机USB调试是灰色的问题
- 大数据DataNode 硬盘故障导致uuid变化问题处理
- 最大子段和
- java基础总结07-面向对象3(this关键字)
- JAVA基本类型运算面试必须要知道的几个问题
- nginx 配置多域名 及 tomcat 负载均衡 一
- Redis的主从架构(主从&主从从)
- SVN 1.安装与使用
- 实现apk的下载安装与启动
- 一张图说明Unity3d各种update的区别_包括Awake() Start()
- c++11异步编程