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

C++ 前缀和

时间:2025-01-05 15:55:11浏览次数:1  
标签:main 前缀 int namespace C++ 数组 include

有一个数组{2,1,3,6,4},询问三次结果:a[5] = {2, 1, 3, 6, 4}

1. 数组第1到第2个元素的和是多少?

2. 数组第1到第3个元素的和是多少?

3. 数组第2到第4个元素的和是多少?

原始方法(无前缀和):

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 int main(){
 5     int a[5]={2,1,3,6,4};
 6     for(int i=0;i<3;i++){
 7         int l,r;//TODO
 8         cin>>l>>r;
 9         
10         int sum=0;
11         for(int j=l-1;j<r;j++){
12             sum+=a[j];
13         }
14         
15         cout<<"sum:"<<sum<<endl;
16     }
17 
18     return 0;
19 }
原始暴力算法

前缀和方法:

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 int main(){
 5     int a[5]={2,1,3,6,4};
 6     int s[6];
 7     s[0]=0;
 8     
 9     for(int i=0;i<6;i++){
10         s[i]=s[i-1]+a[i-1];
11     }
12     
13     for(int i=0;i<3;i++){
14         int l,r;
15         cin>>l>>r;
16         cout<<s[r]-s[l-1]<<endl;
17     }
18 
19     return 0;
20 }
前缀和方法

 

标签:main,前缀,int,namespace,C++,数组,include
From: https://www.cnblogs.com/SIPnnnnn/p/18653415

相关文章

  • C++前缀和
    有一个数组{2,1,3,6,4},询问三次结果:a[5]={2,1,3,6,4}1.数组第1到第2个元素的和是多少?2.数组第1到第3个元素的和是多少?3.数组第2到第4个元素的和是多少?  没有用前缀和的原始用法:1#include<iostream>2#include<stdio.h>3usingnamespacestd;4intma......
  • C++版AI猜数
    源码#include<iostream>#include<ctime>usingnamespacestd;inta[17]={0,1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31};intb[17]={0,2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31};intc[17]={0,4,5,6,7,12......
  • C++中的 多维数组、锯齿数组
    多维数组定义:多维数组可以看作是数组的数组,通过在定义时指定每个维度的大小来创建。下面以三维数组为例。访问:使用多个索引来访问数组中的元素,索引从0开始。销毁:对于栈上定义的多维数组,当作用域结束时会自动销毁;对于堆上动态分配的多维数组,需要手动释放内存。#include<iost......
  • 前缀和和差分
    前缀和(PrefixSum)和差分(DifferenceArray)是处理数组问题时常用的两种数据结构或算法技巧,它们可以加速某些类型的查询,尤其是在涉及数组元素累积和或变化量的情况下。前缀和(PrefixSum)前缀和是一种将数组元素的累积和存储在新数组中的技术。对于一个数组a,其前缀和数组prefixS......
  • C++函数的出参
    在C#中,在函数或方法的参数前添加上out或ref时,这个参数就是出参了。在C++中主要是通过指针和引用实现来类似的功能。#include<iostream>//使用指针作为出参//getValues接受两个指向整数的指针,并通过这些指针修改了调用者提供的变量的值voidgetValues(int*a,int*b)......
  • C/C++调试---堆数据结构
    堆数据结构因为C/C++语言赋予程序员通过引用和指针来操纵内存对象的最大自由,所以毫不奇怪的是这些程序中的大多数bug都与错误的内存访问有关。根据错误发生的位置是栈还是堆,内存错误可分为两种:栈错误和堆错误。栈栈是分配给给一个独立的控制流(线程)的来纳许内存区域,用......
  • C/C++调试---调试符号与调试器
    调试符号与调试器调试符号调试符号由编译器生成,与相关的机器代码、全局数据对象等一同产生。链接器会收集并组织这些符号,将他们写入可执行文件的调试部分,或存储到一个单独文件中。概览全局函数和变量源文件和行信息为了优化程序性能,编译器可能会对源代码进行位移,情......
  • 【最新原创毕设】基于SpringBoot的企业综合业务审批管理系+37708(免费领源码)可做计算机
    目 录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2 企业综合业务审批管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2功能需求分析2.2.1功能性分析2.2.2非功能性......
  • C++Primer 变量
    欢迎阅读我的【C++Primer】专栏专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!目录2.2变量变量......
  • 蓝桥杯2020年省赛C/C++B组第2题 既约分数
    解题思路:本题关键是掌握求最大公约数的方法——辗转相除法,其次就是注意如何减少遍历次数,我们不需要进行完全枚举,因为既然是既约分数,它本身的分子和分母倒过来组成的新的数也是既约分数,我们只需要统计一边即可,将统计完的的结果×2-1便是最终结果(因为1/1倒过来一样,所以要减去这......