当前位置: 首页 > java >正文

前缀和(优化算法)

对于程序来说,看到范围,或者明确的次数,或不确定多个,就用循环结构。
遇到能或不能用分支结构。
【数组找最值】打擂台;排序后输出最后一个;
输出数组第一个:sort(a,a+n,greater<int>())从大到小
【数组相邻两个数的和的最大值】不能排序,自己做一下。

6 3        
3 6 4 1 5 2
#include <bits/stdc++.h>
using namespace std;//6 3
//3 6 4 1 5 2
int main() {int n, m;cin >> n >> m;int a[n];for (int i = 0; i < n; i++) {cin >> a[i];}int max = 0;//前m个数的和for (int i = 0; i < m; i++) {max += a[i];}//for (int i = 0; i <= n - m; i++) {int t = 0;for (int j = i; j < i + m; j++) {t += a[j];cout << a[j] << "+";}cout << "=" << t << endl;if (max < t)max = t;}cout << max;return 0;}

【任意m个相邻数和最大的那组】输出结果。自己做一下。

【前缀和来解题】优化,数组连续区间求和就用它。自己做一下。
核心思想:通过减法获取连续区间。 ①②③④⑤⑥⑦⑧⑨⑩
a[0] = ① 
a[1] = ① + ②
a[2] = ① + ② + ③
a[3] = ① + ② + ③ + ④
...
a[n] = ① + ② + ③ + ④ + ... + 第 n + 1 个数

观察
① + ② ==> a[1]
② + ③ ==> a[2] - a[0]

思考
获取第 i 位第 i + 1位的数 ==>
a[i] = ① + ② + ③ + ④ + ... + 第 i + 1 个数
a[i - 1] = ① + ② + ③ + ④ + ... + 第 i 个数
a[i - 2] = ① + ② + ③ + ④ + ... + 第 i - 1 个数
变形
a[i] = ① + ② + ③ + ④ + ...+ 第 i - 1 个数 + 第 i 个数 + 第 i + 1 个数

a[i] + a[i+1] = a[i] - a[i-2]拓展
获取m个数的区间 ==> a[i] - a[i-m]  从当前数开始往前数m个数
前缀和标准输入:

int n;
cin >> a[0];
int a[n];
cin >> a[0];
for(int i = 1; i < n; i++){int t;cin >> t;a[i] = a[i-1] + t;
}


//可以减少一层循环

#include <bits/stdc++.h>
using namespace std;int main() {int n, m;cin >> n >> m;int a[n];for (int i = 1; i < n; i++) {int t;cin >> t;a[i] = a[i - 1] + t;}int max = a[m - 1];for (int i = m; i < n; i++) {int t = a[i] - a[i - m];if (max < t)max = t;}cout << max;return 0;}

http://www.xdnf.cn/news/19586.html

相关文章:

  • ClickHouse常见问题——ClickHouseKeeper配置listen_host后不生效
  • 面试 TOP101 动态规划专题题解汇总Java版(BM62 —— BM82)
  • 二、SVN基础命令速查表
  • leetcode 1792. 最大平均通过率 中等
  • 通过 select into outfile / load data infile 进行数据导入导出学习笔记
  • 开源项目_金融分析工具TradingAgents
  • 01数据结构-红黑树
  • python 数据类型【python进阶一】
  • java设计模式一、单例模式
  • 【K8s】整体认识K8s之Configmap、Secret/ResourceQuota资源配额/访问控制
  • Linux应用开发-windows,linux环境下相关工具
  • Adobe Illustrator 2025最新破解教程下载安装教程,Illustrator2025最新版下载
  • AI 安全与伦理:当大模型拥有 “决策能力”,我们该如何建立技术边界与监管框架?
  • 新手向:前端开发中的常见问题
  • NLP大语言模型数据准备
  • 基于 DNA 的原核生物与微小真核生物分类学:分子革命下的范式重构​
  • Shell编程(二):正则表达式
  • FastK v1.1 安装与使用-生信工具59
  • Gradle vs. Maven,Java 构建工具该用哪个?
  • 喜讯!华清远见参与制定的《电子产品印制电路板可制造性设计(DFM)和可靠性设计规范》正式发布
  • 【无标题】训练、推理适用的数据类型
  • 专题:2025全球新能源汽车供应链核心领域研究报告|附300+份报告PDF、数据仪表盘汇总下载
  • 关闭页面强制清除所有循环定时器
  • ES6手录02-字符串与函数的扩展
  • Kotlin 协程异步任务工具类:高效处理异步操作与超时控制
  • UE5 为啥原生的NotifyState写逻辑会有问题
  • 开源低代码平台(NocoBase)
  • 20250828的学习笔记
  • 9.1日IO作业
  • 2025年09月01日Github流行趋势