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

embedded/2024/11/14 23:17:08/

在这里插入图片描述
铁子们好呀,今天博主给大家更新一道编程题!!!
题目链接如下: 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的状态。
如图:
在这里插入图片描述
好,今天的题目讲解就到这里结束啦,如果铁子们看了上面的代码实现及注释,还有不懂的话,欢迎私信。


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

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


http://www.ppmy.cn/embedded/137620.html

相关文章

基于java+springboot+layui的流浪动物交流信息平台设计实现

基于javaspringbootlayui的流浪动物交流信息平台设计实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系…

三周精通FastAPI:37 包含 WSGI - Flask,Django,Pyramid 以及其它

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/advanced/wsgi/ 包含 WSGI - Flask&#xff0c;Django&#xff0c;其它 您可以挂载多个 WSGI 应用&#xff0c;正如您在 Sub Applications - Mounts, Behind a Proxy 中所看到的那样。 为此, 您可以使用 WSGIMiddlewar…

计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021

作者&#xff1a;程序媛9688开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0…

保研考研机试攻略(满分篇):第二章——满分之路上(1)

&#x1f368;&#x1f368;&#x1f368;高分篇的内容已经将机试可能涉及到的题型及考点都一一列举出来&#xff0c;并给大家提供了练习题目&#xff0c;帮助大家巩固基础加深理解。在大多数院校的机试中&#xff0c;学会高分篇的内容已经足够考到 90 分以上的成绩&#xff0c…

李飞飞从底层逆袭到AI行业先锋改变世界给我带来什么启发?

文章目录 前言艰难的移民历程:从成都到美国的文化冲击经济困境中的坚持:从洗衣店到哈佛梦关键的导师:鲍勃老师的影响与数学天赋的发现学术与创业的选择:听从母亲的建议,走向学术巅峰ImageNet的开创:定义现代图像识别技术的基石中美文化的交融:始终不忘中国身份的她启发前…

【Chapter 3】Machine Learning Classification Case_Prediction of diabetes-XGBoost

文章目录 1、XGBoost Algorithm2、Comparison of algorithm implementation between Python code and Sentosa_DSML community edition(1) Data reading and statistical analysis(2)Data preprocessing(3)Model Training and Evaluation(4)Model visualization 3、summarize 1…

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)

一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…