问题:求一个数组的连续和的最大值
思路:第一步,将数组合并成正负交错的数组
第二步,对于最大和而言,所取的区间段一定在某个正数处结尾。可以用递归的方式求得第i处结尾的最大和与第i+2处结尾的最大和的关系。
源码:
#include <iostream> using namespace std; int revise(int *A, int n){ int j=0; int k=0; for(int i=0;i<n;i++){ if(i==n-1||A[i]*A[i+1]<0){ int temp=0; for(int t=j;t<=i;t++){ temp+=A[t]; } A[k++]=temp; j=i+1; } } return k; } int calMax(int *A,int n){ if(n==1) return A[0]; int temp,i; if(A[0]>=0){ temp=A[0];i=0; }else{ temp=A[1];i=1; } int max=temp; while(i+2<n){ temp=(temp+A[i+1]>0)?(temp+A[i+1]+A[i+2]):A[i+2]; max=max>temp?max:temp; i+=2; } return max; } void main(){ cout<<"输入(第一行输入测试组数,接下来每行第一个数输入数组大小,剩下为数据):"<<endl; int testNo; cin>>testNo; int *n=new int[testNo]; int *result=new int[testNo]; int i=0; int inputNo=testNo; while(inputNo--){ cin>>n[i]; int *arr=new int[n[i]]; for(int k=0;k<n[i];k++){ cin>>arr[k]; } int t=revise(arr,n[i]); result[i]=calMax(arr,t); i++; } i=0; cout<<"输出:"<<endl; while(i<testNo){ cout<<result[i]<<endl; i++; } }
相关推荐
连续和离散系统分析 matlab
连续还分为左连续和右连续,这两个概念的定义和左右极限值有关系。 如果函数在某点不连续,就称该点为间断点。由间断点可以推出函数连续的三个条件,一是函数在该点有定义,二是函数在该点的极限存在,三是函数在该...
连续和离散系统分析.pdf连续和离散系统分析.pdf连续和离散系统分析.pdf连续和离散系统分析.pdf连续和离散系统分析.pdf
搭建了连续和离散两种情况下的pid s函数,效果可以,互相学习参考。
连续和连续和离散统一的动态场模型扩展研究 离散统一的动态场模型扩展研究
连续和离散时间信号和系统-理论和计算示例.zip
在matlab中实现隐马尔可夫连续和离散分析,仅做参考!
连续和离散系统分析.doc
求1到n的连续和、平方和、立方和,运用类实现及调用函数
最大连续和问题。给出一个长度为n的序列A1,A2,…,An,求最大连续和。换句话说,要求找到1,使得Ai+Ai+1+...+Aj 尽量大。
为了获得到锥度量空间的上半连续和下半连续集值映射的连续点所具有的性质,通过构造第二纲集的方法,得到了到锥kR定义的锥度量空间kR的上半连续和下半连续紧值集值映射的连续点构成的集合是定义域中的剩余集....
网络优化:连续和离散模型 英文文字版 Dimitri P. Bertsekas
/*1、输出1到100的连续和*/ declare @i int , @sum int select @i =1, @sum=0; while(@i ) begin set @sum=@sum+@i set @i=@i+1 end print'1到100的连续和:' +cast (@sum as varchar)
连续和脉冲接种的SVIS传染病模型的动力学研究,袁朝晖,周春燕,假设总人口不变,建立了连续及脉冲接种的SVIS传染病动力学模型. 对于连续型模型,利用常微分方程的稳定性理论和Lasalle不变原理,得�
matlab开发-连续和离散时间最佳减少顺序lqgoutputfeedback。最优约化输出反馈控制器
行业分类-电子-一种用于输配电裸导线连续和跳线的节能线夹
带有TEC温控的连续和脉冲型半导体激光电源的研制.pdf
【免费题库】华为OD机试 - 数组连续和(Java & JS & Python & C & C++).html