新闻详情

新闻详情

首页 / 资讯中心 / 详情

【C++算法打怪专栏】连续子数组最小和问题:滑动窗口与暴力枚举分析

发布时间:2026/9/27 6:58:14来源:尧图网络
【C++算法打怪专栏】连续子数组最小和问题:滑动窗口与暴力枚举分析
【C算法打怪专栏】连续子数组最小和问题滑动窗口与暴力枚举分析在刷题过程中求“连续m mm个元素的区间和”是一个极其经典的问题。本文将以洛谷 P1614 爱与愁的心痛 为例讲解暴力枚举与滑动窗口 (O ( n ) O(n)O(n)) 两种解法。一、题目描述给定n nn个整数和一个整数m mm求连续m mm个数的和的最小值。输入第一行为n , m n, mn,m接下来的n nn行每行一个整数a i a_iai​。输出连续m mm个数的和的最小值。数据范围0 ≤ m ≤ n ≤ 3000 0 \le m \le n \le 30000≤m≤n≤30001 ≤ a i ≤ 100 1 \le a_i \le 1001≤ai​≤100。二、方法一双重循环暴力枚举最直观的做法是枚举所有可能的起始位置i ii然后计算从i ii开始的连续m mm个数的和最后维护一个最小值。C 代码实现#includebits/stdc.husingnamespacestd;intmain(){// 提高 IO 效率ios::sync_with_stdio(false);cin.tie(nullptr);intn,m;if(!(cinnm))return0;vectorinta(n);for(inti0;in;i){cina[i];}// 特殊情况判断if(m0){cout0\n;return0;}intmin_aINT_MAX;// 外层循环枚举起点注意边界为 n - mfor(inti0;in-m;i){longlongans0;for(intji;jim;j){ansa[j];}if(ansmin_a){min_aans;}}coutmin_a\n;return0;}复杂度分析时间复杂度O ( n × m ) O(n \times m)O(n×m)。在n , m ≤ 3000 n, m \le 3000n,m≤3000时计算量约9 × 10 6 9 \times 10^69×106可以在1.0 s 1.0\text{s}1.0s内轻松通过。空间复杂度O ( n ) O(n)O(n)用于存储原数组。三、方法二滑动窗口最优解当数据规模扩大到n , m ≤ 10 5 n, m \le 10^5n,m≤105时暴力做法会超时TLE。此时可以使用滑动窗口思想先计算前m mm个元素的和current_sum。窗口向右移动一步时加上新移入的元素减去移出的元素即可在O ( 1 ) O(1)O(1)时间内得到新窗口的和。C 代码实现#includeiostream#includevector#includeclimits#includealgorithmusingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn,m;if(!(cinnm))return0;vectorinta(n);for(inti0;in;i){cina[i];}if(m0){cout0\n;return0;}// 1. 初始化第一个窗口的和intcurrent_sum0;for(inti0;im;i){current_suma[i];}intmin_acurrent_sum;// 2. 滑动窗口更新最小值for(intim;in;i){current_suma[i]-a[i-m];// 滑入 a[i]滑出 a[i-m]min_amin(min_a,current_sum);}coutmin_a\n;return0;}复杂度分析时间复杂度O ( n ) O(n)O(n)整个数组只需遍历一次。空间复杂度O ( n ) O(n)O(n)。四、坑点与总结边界条件控制外层循环终止条件是i n - m写成i n会导致内层循环越界访问造成RE。特殊输入当m 0 m 0m0时连续0 00个数的和为0 00需要提前退出。初始化维护最小值的变量应初始化为足够大的数如INT_MAX。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

给网站建设提意见避坑速查手册:报价与成本全解析 2026/9/27 6:58:05

给网站建设提意见避坑速查手册:报价与成本全解析

给网站建设提意见避坑速查手册:报价与成本全解析 网站做好了却没人访问,这大概是甲方最痛心的经历。很多老板以为付了钱,网站上线就是万事大吉,结果流量为零,转化率为零,钱白花。这往往不是设计不够好看,而是你在验收阶段没给建设方提对意见,或者压根…

阅读更多 →
Mosquitto 0.5.1 升级指南:sqlite3-pcre 库路径变更与 `ext_sqlite3_regex` 配置详解 2026/9/27 6:57:59

Mosquitto 0.5.1 升级指南:sqlite3-pcre 库路径变更与 `ext_sqlite3_regex` 配置详解

物联网消息队列后端 【免费下载链接】mosquitto Eclipse Mosquitto - An open source MQTT broker 项目地址: https://gitcode.com/gh_mirrors/mosquit/mosquitto 点击查看 免费下载 本文是一篇面向 Mosquitto 历史版本(0.5.1)用户的技术升级…

阅读更多 →
重庆建站模板厂家避坑指南:从0到1完整流程解析 2026/9/27 6:57:58

重庆建站模板厂家避坑指南:从0到1完整流程解析

重庆建站模板厂家避坑指南:从0到1完整流程解析 自己不会代码想做网站,是不是觉得头大?别慌,找对 重庆建站模板厂家 能省一半力气。很多老板找服务商,光看价格不看 完整流程…

阅读更多 →
佛山市seo点击排名软件适合什么场景 2026/9/27 6:57:51

佛山市seo点击排名软件适合什么场景

3种免费工具搞定佛山SEO点击排名告别建站拖延 改个需求建站公司拖一周?别等了,直接用免费工具自己搞定。 在佛山做了十年网站建设,见过太多老板被“定制开发”坑得团团转。今天不聊虚的,直接上干货: 佛山市seo点击排名软件 里那些真正能用的…

阅读更多 →
预制AIDC产业分析:全模块化设计如何把交付周期从6个月压到100天 2026/9/27 6:57:45

预制AIDC产业分析:全模块化设计如何把交付周期从6个月压到100天

CUBE 5.0全模块化AIDC拆解:100天交付周期背后的技术架构与产业变量 如果你正在关注全模块化设计、预制AIDC、CUBE 5.0、交付周期、模块化率、风液兼容等方向,本文基于公开信息整理,可作为AIDC建设模式选型与产业判断的技术参考。 一、产业背景…

阅读更多 →
北京网页设计师工资有多少图解步骤拆解真实薪资与避坑指南 2026/9/27 6:57:39

北京网页设计师工资有多少图解步骤拆解真实薪资与避坑指南

北京网页设计师工资有多少图解步骤拆解真实薪资与避坑指南 改个需求建站公司拖一周,这种憋屈感很多甲方都懂。你以为是技术瓶颈,其实往往是流程烂尾。很多老板问“北京网页设计师工资有多少”,心里没底,怕被坑,也怕招不到人。今天不讲虚的,直接上…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉