
单调队列
using namespace std; 用于标准输入输出
发布日期:2021-05-14 16:43:32
浏览次数:18
分类:精选文章
本文共 1069 字,大约阅读时间需要 3 分钟。
C++代码示例:队列模拟
以下是关于队列模拟的C++代码示例,该代码用于对队列进行各种操作,主要以双向队列的理念为基础。
代码结构如下:
#include
const int N = 1000010; int a[N], q[N];
int main() { int hh = 0, tt = -1; int n, k;
cin >> n >> k;for (int i = 0; i < n; ++i) { cin >> a[i];}for (int i = 0; i < n; ++i) { if (hh <= tt && i - k + 1 < 0) { if (q[hh]) hh++; } while (hh <= tt && a[i] <= a[q[tt]]) tt++; q[++tt] = i; if (i >= k - 1) { cout << a[q[hh]]; cout << " "; }}puts("");hh = 0, tt = -1;for (int i = 0; i < n; ++i) { if (hh <= tt && i - k + 1 < 0) { if (q[hh]) hh++; } while (hh <= tt && a[i] >= a[q[tt]]) tt--; q[++tt] = i; if (i >= k - 1) { cout << a[q[hh]]; cout << " "; }}return 0;
}
代码说明:
包含头文件 #include
使用 namespace std; 用于简化代码编写
定义常量N为1000010,数组a和q分别用于存储元素和队列操作
函数main()的实现步骤:
- 初始化hh为0,tt为-1,用于遍历和队列头尾指针
- 读取n和k值
- 读取n个整数存入数组a
- 遍历读取的数组a,执行队列操作
- 头指针hh和尾指针tt的逻辑操作
- 输出符合条件的数值
- 输出换行字符
- 再次初始化hh和tt进行第二次遍历
- 输出结果
主函数返回0,程序结束
该代码模拟了双向队列的基本操作,适用于需要先进后进处理的场景。
发表评论
最新留言
很好
[***.229.124.182]2025年04月21日 08时21分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
qt中转到槽后如何取消信号与槽关联
2019-03-10
qt问题记录-spin box与double spin box
2019-03-10
移动端事件
2019-03-10
css 图片按比例缩放
2019-03-10
小程序form表单里面buton点击事件失效
2019-03-10
微信小程序placeholder设置自定义样式
2019-03-10
spring-day01
2019-03-10
spring的值注入与组件扫描
2019-03-10
C#跨窗体程序调用方法的具体操作
2019-03-10
C#中创建Android项目
2019-03-10
统计学之变异系数与是非标志
2019-03-10
关于继承的一些基本知识
2019-03-10
抖音发布黄金时间段,抖音上热门最佳时间
2019-03-10
我的图床~
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
Iterable与Iterator
2019-03-11
Python机器学习(六十五)Matplotlib 入门
2019-03-11
关于WebView当前地址问题的疑惑
2019-03-11
Python机器学习(九十二)Pandas 统计
2019-03-11
SecSolar:为代码“捉虫”,让你能更专心写代码
2019-03-11