【算法笔记】一维前缀和
用途:计算某个数组区间的和
实现:另开一个数组,用来存放第i个位置之前所有元素的和(包含第i个元素)
即:prefix[ i ]=prefix[i-1]+cur[i];
例题:
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
//输入盒子数量
long long n;
cin>>n;
//输入盒子中巧克力数量
const int N = n+1;
long long arr[N];
for(int i=1;i<N;i++){
cin>>arr[i];
}
arr[0]=0;
//计算前缀和
long long prefix[N];
prefix[0]=0;
for(long long i=1;i<N;i++){
prefix[i]=arr[i]+prefix[i-1];
}
//计算后缀和
long long surfix[N];
surfix[0]=0;
for (long long i=1,j=n;j>=1;j--,i++){
surfix[i]=surfix[i-1]+arr[j];
}
//输出结果
long long maxresult=0;
long long left=1,right=1;
while(left+right<=n){
if(prefix[left]<surfix[right]){
left++;
}
else if(prefix[left]>surfix[right]){
right++;
}
else{
maxresult=max(maxresult,prefix[left]);
left++;
right++;
}
}
cout<<maxresult<<endl;
return 0;
}
注意longlong替换int,防止出现大数据
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/98052.html
如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!