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

枚举与尺取法(蓝桥杯 c++ 模板 题目 代码 注解)

目录

组合型枚举(排列组合模板()):

排列型枚举(全排列)模板: 

题目一(公平抽签 排列组合): 

​编辑 代码:

题目二(座次问题 全排列):

代码: 

题目三(排列序数):

代码: 

题目四( 美丽的区间 尺取法):

代码:

 题目五(奇怪的动物园 尺取法):

代码:

组合型枚举(排列组合模板({C_{n}}^{m})):

#include <iostream>//排列组合
#include <vector>
using namespace std;
int n, m;
vector<int> chosen;
void calc(int k)
{if ((chosen.size() > m) || (chosen.size() + n - k + 1) < m)//选太多了,选太少了,chosen.size()表示选了几个return;if (k == n + 1)//最后一个数都已经选完了{for (int i = 0; i < chosen.size(); i++)cout << chosen[i]<<" ";//输出第i个为几cout << endl;return;}chosen.push_back(k);//选数字kcalc(k + 1);//继续往深度遍历chosen.pop_back();//不选数字kcalc(k + 1);//继续往深度遍历
}
int main()
{cin >> n >> m;calc(1);//从一开始
}

排列型枚举(全排列)模板: 

#include <iostream>//排列型枚举,全排列
#include <vector>
using namespace std;
int n;
int chosen[20];
int book[20] = { 0 };
void calc(int k)
{if (k == n + 1)//最后一个数都已经选完了{for (int i = 1; i <= n; i++)cout << chosen[i]<<" ";//输出第i个为几cout << endl;return;}for (int i = 1; i <= n; i++){if (book[i])//标记是否用过continue;book[i] = 1;//标记为用了chosen[k] = i;//第k个为数字icalc(k + 1);//继续往深度遍历book[i] = 0;//回溯,没访问过ichosen[k] = 0;}
}
int main()
{cin >> n;calc(1);//从一开始
}

题目一(公平抽签 排列组合): 

 代码:

#include<iostream>
#include<vector>
using namespace std;
int n, m;
vector<int> chosen;
vector<string> name;
void calc(int k)
{if (chosen.size() > m || chosen.size() + (n - k + 1) < m)//选多了或者选少了,chosen.size()表示选了几个return;if (k == n + 1)//最后一个也已经选完了{for (int i = 0; i < chosen.size(); i++)cout << name[chosen[i]-1] << " ";cout << endl;}chosen.push_back(k);//选数字kcalc(k + 1);//继续往深度遍历chosen.pop_back();//不选数字kcalc(k + 1);//继续往深度遍历
}
int main()
{cin >> n >> m;for (int i = 0; i < n; i++){string s;cin >> s;name.push_back(s);}calc(1);
}

题目二(座次问题 全排列):

代码: 

#include<iostream>
#include<vector>
using namespace std;
int n;
int chosen[15];
int book[15];//标记是否访问过
string name[15];
void calc(int k)
{if (k == n + 1)//最后一个数都已经选完了{for (int i = 1; i <= n; i++)//输出该排列{cout << name[chosen[i] - 1] << " ";//name下标从0开始}cout << endl;return;}for (int i = 1; i <= n; i++){if (book[i])//标记是否用过continue;book[i] = 1;//标记为用了chosen[k] = i;//第k个为数字icalc(k + 1);//继续往深度遍历book[i] = 0;//回溯,没访问过ichosen[k] = 0;}
}
int main()
{cin >> n;for (int i = 0; i < n; i++){cin >> name[i];}calc(1);//从第一个开始
}

题目三(排列序数):

代码: 

 

#include <iostream>//用next_permutation函数进行全排列
#include <algorithm>
using namespace std;
int main()
{long long  cnt=0;//记录个数string s;string s1;cin >> s;s1 = s;sort(s.begin(), s.end());//从大到小排序do {if (s == s1)//相等的时候跳出break;cnt++;} while (next_permutation(s.begin(), s.end()));//开始遍历cout << cnt;}

尺取法是一种线性的高效率算法。记(L,R)为一个序列内以L为起点的最短合法区间,如果R随L的增大而增大的,就可以使用尺取法。具体的做法是不断的枚举L,同时求出R。因为R随L增大而增大,所以总时间复杂度为O(n)

题目四( 美丽的区间 尺取法):

代码:

#include <iostream>
using namespace std;
int n, s;
int ans = 1e8, sum = 0;
int a[100010];
int main()
{cin >> n >> s;for (int i = 1; i <= n; i++)cin >> a[i];for (int l = 1, r = 1; r <= n; ){if(sum<s)//不大于s,则加上,往右遍历{sum+=a[r],r++;}else{ans=min(r-l,ans);//取小的sum-=a[l];//减掉最左边l++;//往下遍历}}if (ans == 1e8)//不存在cout << 0;elsecout << ans;
}

 题目五(奇怪的动物园 尺取法):

代码:

#include<iostream>
using namespace std;
int n, m, cnt,ans,ansl=0,ansr=0;//ans记录票价
int a[1010];
int b[1010];//记录x类动物的数量
void In(int x)
{if (b[x] == 0) cnt++;//之前没有x类动物,现在加入了,种类cnt++b[x]++;//x类动物数量加一
}
void De(int x)
{if (b[x] == 1) cnt--;//之前有一个x类动物,现在删掉,种类cnt--b[x]--;//x类动物数量减一
}
int main()
{cin >> n >> m;for (int i = 1; i <= n; i++){cin >> a[i];}ans = n;//最大为一共有的动物数量for (int l = 1, r = 1; r <= n; r++){In(a[r]);//a[r]这类动物加入while (1){De(a[l]);//删掉最左边类动物if (cnt == m) l++;//删了,cnt等于m,所有种类都选到了,则l++else//删了这类动物,不满足cnt等于m,还是要把这类动物加入{In(a[l]);break;}}if (cnt == m && r - l + 1 < ans)//满足所有动物都能看,票价更低了,更新左区间和右区间{ans = r - l + 1;ansl = l, ansr = r;}}if (ansl != 0)cout << ansl << " " << ansr;elsecout << 1 << n;
}

相关文章:

枚举与尺取法(蓝桥杯 c++ 模板 题目 代码 注解)

目录 组合型枚举&#xff08;排列组合模板&#xff08;&#xff09;&#xff09;: 排列型枚举&#xff08;全排列&#xff09;模板&#xff1a; 题目一&#xff08;公平抽签 排列组合&#xff09;&#xff1a; ​编辑 代码&#xff1a; 题目二&#xff08;座次问题 全排…...

11、电源管理入门之Regulator驱动

目录 1. Regulator驱动是什么? 2. Regulator框架介绍 2.1 regulator consumer 2.2 regulator core 2.3 regulator driver 3. DTS配置文件及初始化 4. 运行时调用 5. Consumer API 5.1 Consumer Regulator Access (static & dynamic drivers) 5.2 Regulator Outp…...

24年证券从业考试注册报名流程详细图解,千万不要错过报名哦!

&#xff08;一&#xff09;时间安排 考生报名缴费时间&#xff1a;3月5日15时至3月8日15时 退费时间&#xff1a;3月7日15时至3月10日15时 准考证打印时间&#xff1a;3月20日15时至3月23日18时 &#xff08;二&#xff09;注册流程 1、进入中国证券业协会网站-从业人员管理-考…...

Git入门学习笔记

Git 是一个非常强大的分布式版本控制工具&#xff01; 在下载好Git之后&#xff0c;鼠标右击就可以显示 Git Bash 和 Git GUI&#xff0c;Git Bash 就像是在电脑上安装了一个小型的 Linux 系统&#xff01; 1. 打开 Git Bash 2. 设置用户信息&#xff08;这是非常重要的&…...

⭐每天一道leetcode:27.移除元素(简单;vector)

⭐今日份题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中…...

如何处理Android内存泄漏和性能优化

处理Android内存泄漏和性能优化是一个复杂的过程&#xff0c;涉及到对应用的深入理解和良好的编程习惯。以下是一些关键的步骤和建议&#xff1a; 1. **理解内存泄漏的本质**&#xff1a; - 内存泄漏&#xff08;Memory Leak&#xff09;发生在程序中&#xff0c;当不再需要…...

应用方案 | D722 9MHz,轨对轨I/O CMOS运放,低噪声、低电压、低功耗运放,应用广泛

D722是低噪声、低电压、低功耗运放&#xff0c;应用广泛。D722具有9MHz的高增益带宽积&#xff0c;转换速率为8.5V/μs&#xff0c;静态电流为1.7mA&#xff08;5V电源电压&#xff09;。 D722具有低电压、低噪声的特点&#xff0c;并提供轨到轨输出能力&#xff0c;D722的最大…...

小程序常用样式和组件

常用样式和组件 1. 组件和样式介绍 在开 Web 网站的时候&#xff1a; 页面的结构由 HTML 进行编写&#xff0c;例如&#xff1a;经常会用到 div、p、 span、img、a 等标签 页面的样式由 CSS 进行编写&#xff0c;例如&#xff1a;经常会采用 .class 、#id 、element 等选择器…...

《Redis 设计与实现》读书概要

注&#xff1a; 《Redis 设计与实现》一书基于 Redis 2.9 版本编写&#xff0c;部分内容已过时&#xff0c;过时之处本文会有所说明。本文为读书笔记&#xff0c;部分简单和日常使用较少的知识点未记录。原书网页版地址 https://redisbook.com/ 一、底层数据结构 SDS(Simple Dy…...

Docker之数据卷自定义镜像

文章目录 前言一、数据卷二、自定义镜像 前言 Docker提供了一个持久化存储数据的机制&#xff0c;与容器生命周期分离&#xff0c;从而带来一系列好处&#xff1a; 总的来说Docker 数据卷提供了一种灵活、持久、可共享的存储机制&#xff0c;使得容器化应用在数据管理方面更加…...

Docker技术概论(4):Docker CLI 基本用法解析

Docker技术概论&#xff08;4&#xff09; Docker CLI 基本用法解析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:http…...

【JAVA重要知识 | 第五篇】暴打Java8新特性—(Lambda、方法引用、Stream流、函数式接口、Date Time API、Optional类)

文章目录 5.Java8新特性5.1新特性列表5.2Lambda 表达式5.2.1函数式思想5.2.2举例&#xff08;1&#xff09;方式一&#xff1a;创建对象&#xff08;2&#xff09;方式二&#xff1a;匿名内部类&#xff08;3&#xff09;方式三&#xff1a;Lambda 5.2.3Lambda表达式的标准格式…...

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker入门到精通》 《k8s入门到实战》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、基本概念和介绍 1、Docker Swarm 是什么&#xff0c;它与 …...

编码规范(前端)

文章目录 1. 文档说明1.1 编制说明1.2 名词解释 2.前端研发规范2.1 HTML编码规范2.1.1 文档类型2.1.2 语言2.1.3 元数据2.1.4 资源加载2.1.5 页面标题2.1.6 编码风格2.1.7 标签2.1.8 属性2.1.9 语义化 2.2 CSS编码规范2.2.1 文件引用2.2.2 命名-组成元素 知识点 1. 文档说明 1…...

【JavaEE进阶】部署Web项目到Linux服务器

文章目录 &#x1f343;前言&#x1f340;什么是部署&#x1f332;环境配置&#x1f6a9;数据准备&#x1f6a9;程序配置⽂件修改 &#x1f384;构建项目并打包&#x1f38b;上传Jar包到服务器,并运行&#x1f6a9;上传Jar包&#x1f6a9;运行程序&#x1f6a9;开放端口号 &…...

就业班 2401--3.1 Linux Day9--文件查找和压缩

一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…...

「滚雪球学Java」:JDBC(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…...

RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构

💡本篇内容:RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,RT-DETR专属 应部分读者要求,新增一篇RepVGG 论文理论部分 + 原…...

C#进阶高级语法之LINQ :Lambda 表达式

C# 中的 LINQ (Language Integrated Query) 提供了一种声明性的数据查询和操作方法&#xff0c;它允许开发人员对集合、数据库等数据源进行查询和操作&#xff0c;而不需要编写复杂的循环和手动编码。Lambda 表达式与 LINQ 紧密相关&#xff0c;它提供了一种简洁的方式来定义匿…...

react hook: useCallback

useCallback的主要使用场景在于优化性能&#xff0c;并确保当传递回调函数给子组件时&#xff0c;子组件不会因为父组件的重渲染而重新创建函数。 使用场景 1.当你需要将回调函数传递给子组件时&#xff0c;使用useCallback可以确保子组件在重新渲染时不会不必要地重新创建函数…...

给硬件新人的半导体测试扫盲:从晶圆到芯片,CP/FT/BI测试到底在测什么?

半导体测试全流程解析&#xff1a;从晶圆到芯片的质量守护 走进半导体制造的世界&#xff0c;就像观察一座精密运转的钟表工厂——每个齿轮都必须完美咬合才能确保最终产品走时准确。对于刚接触这个领域的新人来说&#xff0c;理解芯片从硅片到成品的测试流程&#xff0c;是掌握…...

Creality Print:从新手到专家的完整3D打印切片软件指南

Creality Print&#xff1a;从新手到专家的完整3D打印切片软件指南 【免费下载链接】CrealityPrint 项目地址: https://gitcode.com/gh_mirrors/cr/CrealityPrint 在3D打印的世界里&#xff0c;切片软件是连接数字模型与物理实体的关键桥梁。无论您刚刚接触3D打印&…...

单北斗GNSS变形监测系统在地质灾害监测中的应用与维护

北斗 GNSS 变形监测系统在地质灾害监测中发挥着重要作用。它通过高精度定位&#xff0c;实时捕捉地面形变&#xff0c;为防灾减灾提供精准数据支持。系统的定制化设计能适应不同环境&#xff0c;同时具备稳定性与可靠性。随着技术发展&#xff0c;监测和维护也变得更高效。这种…...

CVPR 2023五大技术断层:泛化性、实时性与边缘部署的工程真相

1. 这不是会议速记&#xff0c;而是一份“CVPR 2023技术脉络手绘地图”如果你在搜索引擎里输入“CVPR 2023 summary”&#xff0c;大概率会看到一堆标题党文章&#xff1a;什么“十大突破”、什么“最火模型TOP5”、什么“必看论文清单”。我翻过不下二十篇&#xff0c;结果发现…...

2026降AIGC技术白皮书:全网工具实测雷达图与智能选型助手

2026年&#xff0c;随着AIGC技术的深度渗透&#xff0c;学术写作正面临前所未有的挑战与机遇。论文中AI痕迹的显性化、查重系统的智能化升级以及学术规范的严格审查&#xff0c;让“去AI化”成为每位研究者必须直面的现实命题。传统的文本润色工具已难以满足日益严苛的降AIGC需…...

3步快速掌握罗技鼠标宏:PUBG压枪新手完全指南

3步快速掌握罗技鼠标宏&#xff1a;PUBG压枪新手完全指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以控制的武器后…...

AssetStudio深度解析:Unity资源二进制结构与离线反编译原理

1. 这不是“又一个Unity资源查看器”&#xff0c;而是一把能拆开Unity游戏包的手术刀AssetStudio这个名字&#xff0c;第一次见的人常误以为是Unity官方出的配套工具——毕竟带个“Studio”后缀&#xff0c;界面又长得挺像Unity编辑器。但其实它和Unity Technologies毫无关系&a…...

Unity 2D物理关节底层原理与实战避坑指南

1. 为什么2D物理关节不是“加个组件就完事”——从一个弹球卡墙的bug说起我第一次在Unity里拖进一个HingeJoint2D&#xff0c;想做个旋转门&#xff0c;结果运行时门直接飞出屏幕&#xff0c;撞上墙后像被磁铁吸住一样死死贴着不动。当时以为是刚体质量设错了&#xff0c;调了半…...

Healthy Care辅酶Q10怎么选?

当代社会&#xff0c;心脏健康养护早已不是中老年人的专属需求。长期熬夜的年轻人、高压职场人群、作息紊乱的轮班从业者、体力消耗偏大的服务行业工作者&#xff0c;都容易出现心脏能量不足的信号&#xff1a;爬楼容易气喘、安静状态下莫名心慌、睡眠充足却依旧浑身疲惫。这类…...

3步解锁百度网盘全速下载:baidu-wangpan-parse技术解析与应用实践

3步解锁百度网盘全速下载&#xff1a;baidu-wangpan-parse技术解析与应用实践 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾面对百度网盘那令人绝望的下载速度而束手…...