首页 > 编程语言 >最大前缀和C++

最大前缀和C++

时间:2023-03-04 21:23:07浏览次数:37  
标签:pre 前缀 temp int sum C++ ans 最大

//给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。

#include<iostream>

using namespace std;

const int N=2e5+10;//注意全局常量必须在前面添加const

int a[N];//序列a定义成全局变量

int sum[N];

int main(){

int n;//长度n

cin>>n;

for(int i=1;i<=n;i++){//注意此处i从1开始,下面才可以使用pre=sum[0]

cin>>a[i],sum[i]=sum[i-1]+a[i];//输入a[i]的值,后面是前缀和的定义 sum[1]=sum[0]+a[1],a[1]=sum[1],sum[0]=0

}

int pre=sum[0];//pre初始化

int ans=-2e5;

for(int i=1;i<=n;i++){// 要求最大前缀和,就是求第i个数为结尾的最大子区间和 的意思:假设j到i是最大子区间,用前缀和的方法解决就是用i的和减去j-1的和,即sum[i]-sum[j-1]=sum[j,i] 那么要让sum[j,i]最大,就是让sum[i]最大,sum[j-1]最小

int temp=sum[i]-pre;//temp就是记录所有的sum[j,i]值 一直算 选出一个最大的传给ans

ans=max(ans,temp);//ans就是sum[i]

pre=min(pre,sum[i]);//pre就是sum[j-1] 

}

cout<<ans<<endl;

}

标签:pre,前缀,temp,int,sum,C++,ans,最大
From: https://www.cnblogs.com/chenxinyue/p/17179171.html

相关文章

  • C/C++ 数据结构堆结构算法的实现
    #include<stdio.h>#include<stdlib.h>#include<string.h>//堆的算法实现#defineDEFAULT_CAPCITY128typedefstruct_Heap{int*arr;//存储堆元素的数组......
  • C语言最大公约数
    ////main.c//test_c1////CreatedbyZXTIGERon2023/3/4.//#include<stdio.h>intmain(intargc,constchar*argv[]){//1.求最大公......
  • 算法基础1.4.1前缀和与二维前缀和
    前言前缀和其实不能说是一种算法,它也并不会单独出现题目中。应该说是一个比较简单,但是容易被人忽略的工具正文所谓前缀和,就是一个用来计算数组某个区间内所有数之和的一......
  • 河北工程806c/c++程序设计2013年-2021年编程题
    ps:都是自己练习写的,可能不是最好的写法,但是都运行过,能跑起来。2021年1.从键盘上输入一元二次方程(ax2+bx+c=0)的系数:a,b,c;计算并输出方程的根,如果没有实根则输出“No......
  • 【C++随记】浅谈编译与链接
    原文网址:https://zhuanlan.zhihu.com/p/518831355本文讨论的内容来自于仕琪老师的课程:C/C++从基础语法到优化策略课程地址:[C++](快速学习C和C++,基础语法和优化策略,学了不......
  • C++编译错误、运行错误、链接错误小结
    原文网址:https://blog.csdn.net/Thera_qing/article/details/100740389一、运行错误运行错误是什么运行错误是指代码逻辑无措,由于编译器无法发现运行时错误,这些错误往往......
  • 求二叉树节点的最大距离
    距离即为节点间的边数。code:structNode{Node*left;Node*right;intnmaxleft;intnmaxright;intvhvalue;};intans;//答案intfindmaxval(Node*ro......
  • C/C++ 数据结构优先级队列的实现(使用二级指针)
    #include<iostream>#include<Windows.h>#include<iomanip>//优先级队列的实现usingnamespacestd;#defineMaxSize5typedefintDataType;//队列中的元素类型......
  • hash表 C++的使用以及理解
    hash表C++的使用以及理解1、哈希表定义哈希表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置......
  • 关于最大公约数-最大公因数的原理与表示方法
    在数学中,有两个名词经常会被听到,最大公因数,最大公约数刚开始还以为他们有什么区别呢,后来查询了一下,其实都是一个意思,只是叫法不一样接下来说一下最大公因数的定义 理......