ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++前缀和,差分

2022-01-30 18:33:38  阅读:139  来源: 互联网

标签:pre 前缀 int MAX prefixsum 差分 C++ 数组


一维前缀和

定义:对于一个数组a,前缀和s是通过第推求出部分和。s[i]=a[0]+…+a[i]
如:a[5]={1,3,2,1,5} prefixsum={1,4,6,7,12}
prefixsum[0]=a[0]=1
prefixsum[1]=prefixsum[0]+a[1]=1+3=4
prefixsum[2]=prefixsum[1]+a[2]=4+2=6
prefixsum[3]=prefixsum[2]+a[3]=6+1=7
prefixsum[4]=prefixsum[3]+a[4]=7+5=12
写法:

const int MAX=1e5+5;//定义常量用const int
int a[MAX]={};//定义数组存储数据
int pre[MAX]={};//定义前缀和数组 
a[0]=0;
pre[0]=0;
int n,i;
cin>>n;
for(i=1;i<n;i++)
{
	cin>>a[i];
	pre[i]=pre[i-1]+a[i];
}`

二维前缀和

定义:有一个二维数组a,求出二位前缀和为s[i][j]=s[i-1][j]+s[i][j-1]-s[i][j]+a[i][j]
如:数组a[3][3]
1 3 5
2 4 6
7 8 9
二位前缀和s[3][3]
1 4 9
3 10 21
10 25 45
写法:

const int MAX=1e5+5;
int a[MAX][MAX]={};//定义数组存储数据
int pre[MAX][MAX]={};//定义前缀和数组 
a[0][0]=0;
pre[0][0]=0;
int n,m,i,j;
cin>>n>>m;
for(i=1;i<n;i++)
{
	for(j=1;j<m;j++)
	{
	cin>>a[i][j]];
	pre[i][j]]=pre[i-1][j]+pre[i][j-1]-pre[i][j]+a[i][j];
}

一维差分

定义:对于一个数列Ai,Pi=Ai-A(i-1),则称Pi为Ai的差分数列
如:
数列a={1,1,2,4,0,8}
差分数列p={1,0,1,2,-4,8}

二维差分

定义:对数组a[i][j],差分数组p[i][j]=a[i][j]-a[i-1][j]-a[i][j]+a[i-1][j-1]
如:
数组a[3][3]
1 3 5
2 4 6
7 8 9
差分数列p[3][3]
1 2 2
1 0 0
5 -1 -1

标签:pre,前缀,int,MAX,prefixsum,差分,C++,数组
来源: https://blog.csdn.net/cui_bobo/article/details/122754383

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有