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

P10901 [蓝桥杯 2024 省 C] 封闭图形个数

在这里插入图片描述
铁子们好呀,今天博主给大家更新一道编程题!!!
题目链接如下: P10901 [蓝桥杯 2024 省 C] 封闭图形个数
好,接下来,我将从三个方面讲解这道例题。分别是

  • 题目解析
  • 算法原理
  • 代码实现

文章目录

  • 1.题目解析
  • 2.算法原理
  • 3.代码实现

1.题目解析

如下图:
在这里插入图片描述
1.从图中: 可以看出题面的意思比较简单,就是说某个数字中如果有0,4,6,9,这些数字的话,就有一个封闭图形。
如果某个数字中有8的话,则有两个封闭图形。如果是其他数字,就没有封闭图形的。
2.那大家看了博主画图分析的话,大概也懂了这题的意思了吧,通俗点说就是比较每个数的封闭图形个数,若封闭图形个数相同,则比较它们的数值大小,对它们进行升序排序。
这个题思路比较简单,就是简单的模拟题嘛。



2.算法原理

如下图所示:
在这里插入图片描述
1.还是回到刚刚那幅图,这个题的算法原理其实比较简单:
优先对封闭图形个数进行排序,如果封闭图形个数相同,再比较数字的大小进行升序排序。
2.那这个题最好的做法就是定义一个结构体类型,里面分别放的是数值的大小nums成员变量和封闭图形个数成员变量close_shapes
通过vector创建一个结构体的容器,用个循环遍历n次,在每次循环中,将用户每次输入的数字以及该数字转换后的封闭图形个数,放入结构体类实例化的对象中对应结构体成员变量numsclose_shape中去。每次循环push_back这个结构体实例化的对象到vector的容器去。
最后我们直接用sort函数对这个容器进行自定义排序,先按封闭图形升序排序,再按那个数值大小进行升序排序。
这里可能有同学会问: 不会用是sort函数自定义函数怎么办,其实这个跟我们之前在C语言期间学习的qsort函数是差不多的。
如果忘了的同学可以看一下这篇文章qsort函数的使用及模拟实现
3.当然啦!如果是实在想知道sort函数怎么用,大家也可以点击此链接来学习sort函数:sort函数的使用技巧
相信大家看了这个网站对sort函数介绍,自己也知道怎么灵活使用。

好,关于这个题的算法原理,博主就讲得差不多了,铁子们记得自己先实现这个代码逻辑,再来看看博主的代码实现的思路,看看和你有什么不同,不要直接看博主的代码实现噢,这对你们提升代码能力没帮助的,算法题只有多练才行的



3.代码实现

接下来,铁子们,可以看看博主的代码实现,里面有详细的注释,希望大家都能理解里面每一行代码的意思。
代码如下:

using namespace std;
#include <bits/stdc++.h> // 引入所有标准库头文件// 定义结构体 MM,用于存储每个数值及其对应的封闭图形个数
struct MM {int nums;          // 原来的数值int close_shapes;  // 数值对应的封闭图形个数
};// 创建一个全局的 vector 容器 vv,用于动态存储结构体 MM 的对象
vector<MM> vv;// 创建全局变量 n,表示输入的数字个数,全局变量默认初始化为 0
int n;// 定义比较函数 Cmp,用于自定义排序
bool Cmp(MM nums1, MM nums2) {// 如果两个数的封闭图形个数不同,按照封闭图形个数升序排序if (nums1.close_shapes != nums2.close_shapes) {return nums1.close_shapes < nums2.close_shapes;}// 如果封闭图形个数相同,则按数值大小升序排序return nums1.nums < nums2.nums;
}int main() {ios::sync_with_stdio(false); // 优化输入输出,关闭 C++ 和 C 的标准流同步cin.tie(0);  // 解开 cin 与 cout 的绑定,以加快 cin 输入速度cout.tie(0); // 解开 cout 绑定,以加快 cout 输出速度cin >> n; // 输入数字的个数并存入 nMM kst;   // 定义结构体变量 kst,用于暂存每个数值的属性// 遍历每个输入的数值for (int i = 1; i <= n; ++i) {int t; // 暂存输入的数值cin >> t;kst.nums = t;       // 将输入数值存入结构体成员 numskst.close_shapes = 0; // 初始化封闭图形个数为 0// 计算数值 t 的封闭图形个数while (t) {// 判断 t 的个位数是否为 0、4、6 或 9,若是,增加一个封闭图形if (t % 10 == 0 || t % 10 == 4 || t % 10 == 6 || t % 10 == 9) {++kst.close_shapes;}// 若个位数为 8,则包含两个封闭图形else if (t % 10 == 8) {kst.close_shapes += 2;}t /= 10; // 移除个位数,继续检查下一位}// 将结构体对象 kst 添加到 vector 容器 vv 中vv.push_back(kst);}// 使用自定义比较函数 Cmp 对 vv 中的数值进行排序sort(vv.begin(), vv.end(), Cmp);// 输出排序后的结果,每个数值按空格分隔for (auto val : vv) {cout << val.nums << ' ';}return 0; // 返回 0 表示程序成功执行
}

在这里插入图片描述
我们将代码拷到洛谷网站提交,也是全部AC的状态。
如图:
在这里插入图片描述

好,今天的题目讲解就到这里结束啦,如果铁子们看了上面的代码实现及注释,还有不懂的话,欢迎私信。


**当然如果大家如果觉得博主这篇文章对你刷题方面有帮助的话,可以给博主一键三连吗 **
在这里插入图片描述

在这里插入图片描述
** 谢谢大家支持!!! **

相关文章:

P10901 [蓝桥杯 2024 省 C] 封闭图形个数

铁子们好呀&#xff0c;今天博主给大家更新一道编程题&#xff01;&#xff01;&#xff01; 题目链接如下&#xff1a; P10901 [蓝桥杯 2024 省 C] 封闭图形个数 好&#xff0c;接下来&#xff0c;我将从三个方面讲解这道例题。分别是 题目解析算法原理代码实现 文章目录 1.题…...

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法) 一、更新并安装基础软件 #切换root用户 sudo su -#更新 apt update #升级 apt upgrade#install vim apt install vim#install net-tools apt install net-tools二、安装ssh并设置…...

手机直连卫星NTN通信初步研究

目录 1、手机直连卫星之序幕 2、卫星NTN及其网络架构 2.1 NTN 2.2 NTN网络架构 3、NTN的3GPP标准化进程 3.1 NTN需要适应的特性 3.2 NTN频段 3.3 NTN的3GPP标准化进程概况 3.4 NTN的3GPP标准化进程的详情 3.4.1 NR-NTN 3.4.1.1 NTN 的无线相关 SI/WI 3.4.1.2…...

蓝桥杯c++算法学习【2】之搜索与查找(九宫格、穿越雷区、迷宫与陷阱、扫地机器人:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 搜索与查找 一、九宫格 【问题描述】 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分&#xff0c;三 …...

Android加载pdf

依赖 implementation com.squareup.okhttp3:okhttp:4.9.1 implementation com.github.barteksc:android-pdf-viewer:3.2.0-beta.1在project.build中添加该源 maven { url "https://repository.liferay.com/nexus/content/repositories/public/" }XML <LinearLa…...

IOT物联网低代码可视化大屏解决方案汇总

目录 参考来源云服务商阿里云物联网平台产品主页产品文档 开源项目DGIOT | 轻量级工业物联网开源平台项目特点项目地址开源许可 IoTGateway | 基于.NET6的跨平台工业物联网网关项目特点项目地址开源许可 IoTSharp | 基于.Net Core开源的物联网基础平台项目特点项目地址开源许可…...

Python的面向对象day7

1、什么是面向对象 面向对象称为OO&#xff0c;他通过将数据和功能封装在一个被称为‘对象’的实体中&#xff0c;来组织和管理代码。面向对象变成&#xff08;OOP&#xff09;具有四个特性&#xff0c;封装、继承、多态、抽象 优点&#xff1a;模块化、安全性高、代码重用性…...

计算机网络(11)和流量控制补充

这一篇对数据链路层中的和流量控制进行详细学习 流量控制&#xff08;Flow Control&#xff09;是计算机网络中确保数据流平稳传输的技术&#xff0c;旨在防止数据发送方发送过多数据&#xff0c;导致接收方的缓冲区溢出&#xff0c;进而造成数据丢失或传输失败。流量控制通常…...

Rust 所有权机制

Rust 所有权机制 本文示例代码地址 所有权是Rust中最独特的特性&#xff0c;它让Rust无需GC就可以保证内存安全。 什么是所有权&#xff1f; 所有权&#xff08;ownership&#xff09;是 Rust 用于如何管理内存的一组规则。所有程序都必须管理其运行时使用计算机内存的方式…...

Pwn VM writeup

国赛期间&#xff0c;做了一个很有意思的pwn题&#xff0c;顺便学了一下现在常见的pwn的板子题是什么样子的&#xff0c;这里做一下记录 Magic VM 题目逻辑 题目本身其实非常的有趣&#xff0c;它实现了一个简易流水线的功能&#xff0c;程序中包含四个结构体&#xff0c;其中三…...

LSTM(长短期记忆网络)详解

1️⃣ LSTM介绍 标准的RNN存在梯度消失和梯度爆炸问题&#xff0c;无法捕捉长期依赖关系。那么如何理解这个长期依赖关系呢&#xff1f; 例如&#xff0c;有一个语言模型基于先前的词来预测下一个词&#xff0c;我们有一句话 “the clouds are in the sky”&#xff0c;基于&…...

机器学习 贝叶斯公式

这是条件概率的计算公式 &#x1d443;(&#x1d434;|&#x1d435;)&#x1d443;(B|A)&#x1d443;(&#x1d434;)/&#x1d443;(&#x1d435;) 全概率公式 &#x1d443;(&#x1d435;)&#x1d443;(&#x1d435;|&#x1d434;)&#x1d443;(&#x1d434;)&am…...

Scala-注释、标识符、变量与常量-用法详解

Scala Scala-变量和数据类型-用法详解 Scala一、注释二、标识符规范三、变量和常量1. 变量&#xff08;var&#xff09;2. 常量&#xff08;val&#xff09;3. 类型推断与显式声明4. var 和 val 的区别5. Scala与Java对比Tips&#xff1a; 各位看客老爷万福金安&#xff0c;一键…...

大数据学习14之Scala面向对象--至简原则

1.类和对象 1.1基本概念 面向对象&#xff08;Object Oriented&#xff09;是一种编程思想&#xff0c;面向对象主要是把事物给对象化&#xff0c;包括其属性和行为。面向对象编程更贴近实际生活的思想&#xff0c;总体来说面向对象的底层还是面向过程&#xff0c;面向过程抽象…...

docker 安装之 windows安装

文章目录 1: 在Windows安装Docker报19044版本错误的时候&#xff0c;请大家下载4.24.1之前的版本&#xff08;含4.24.1&#xff09;2: Desktop-WSL kernel version too low3: docker-compose 安装 (v2.21.0) 1: 在Windows安装Docker报19044版本错误的时候&#xff0c;请大家下载…...

JS 实现游戏流畅移动与按键立即响应

AWSD 按键移动 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box1 {width: 400px;height: 400px;background: yellowgreen;margin: 0 auto;position: relative;}.box2 {width: 50px;height:…...

LabVIEW大数据处理

在物联网、工业4.0和科学实验中&#xff0c;大数据处理需求逐年上升。LabVIEW作为一款图形化编程语言&#xff0c;凭借其强大的数据采集和分析能力&#xff0c;广泛应用于实时数据处理和控制系统中。然而&#xff0c;在面对大数据处理时&#xff0c;LabVIEW也存在一些注意事项。…...

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具视频汇聚技术在智慧安防监控中的应用与优势

随着信息技术的快速发展和数字化时代的到来&#xff0c;安防监控领域也在不断进行技术创新和突破。NVR管理平台EasyNVR作为视频汇聚技术的领先者&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;展现出了在安防监控领域巨大的应用潜力和价值。本文将详细介绍Easy…...

海思3403对RTSP进行目标检测

1.概述 主要功能是调过live555 testRTSPClient 简单封装的rtsp客户端库&#xff0c;拉取RTSP流&#xff0c;然后调过3403的VDEC模块进行解码&#xff0c;送个NPU进行目标检测&#xff0c;输出到hdmi&#xff0c;这样保证了开发没有sensor的时候可以识别其它摄像头的视频流&…...

Vue之插槽(slot)

插槽是vue中的一个非常强大且灵活的功能&#xff0c;在写组件时&#xff0c;可以为组件的使用者预留一些可以自定义内容的占位符。通过插槽&#xff0c;可以极大提高组件的客服用和灵活性。 插槽大体可以分为三类&#xff1a;默认插槽&#xff0c;具名插槽和作用域插槽。 下面…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

Linux操作系统共享Windows操作系统的文件

目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项&#xff0c;设置文件夹共享为总是启用&#xff0c;点击添加&#xff0c;可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download&#xff08;这是我共享的文件夹&#xff09;&…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...

五、jmeter脚本参数化

目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...