主页 > 开源代码  > 

《数组》学习——区间和

《数组》学习——区间和

题目:

给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。

输入描述:

第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间,直至文件结束。

输出描述:

输出每个指定区间内元素的总和。

测试用例:

输入示例

5 1 2 3 4 5 0 1 1 3

输出示例

3 9

前缀和,其思想是重复利用计算过的子数组之和,从而降低区间查询需要累加计算的次数。

测试程序:

#include <iostream> #include <vector> using namespace std; int main() { int n, a, b; std::cout << "输入整数数组的长度:" << std::endl; std::cin >> n; vector<int> vec(n); vector<int> p(n); int presum = 0; std::cout << "输入整数数组的元素:" << std::endl; for (int i = 0; i < n; i++) { std::cin >> vec[i]; presum += vec[i]; p[i] = presum; } std::cout << "输入需要计算总和的区间:" << std::endl; while (std::cin >> a>>b) { int sum; if (a == 0) sum = p[b]; else sum = p[b] - p[a - 1]; std::cout << sum << std::endl; } std::cin.get(); }

标签:

《数组》学习——区间和由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“《数组》学习——区间和