第十一届蓝桥杯大赛软件类省赛第二场C/C++大学B组 题目+易懂题解

试题链接:A-J题题面
如果想对着题目一边看题面一边看题解,可以尝试分屏,很方便,快捷键:win+← win+→ 之所以在标题中加入易懂二字是因为博主自己对算法也不怎么懂,我放出来的题解一定是我自己弄懂之后的比较简单的题解,所以是比较适合小白或者初学者看的,如果有任何的疑惑或者建议、意见都可以在评论区回复我
我使用的头文件#include是万能头文件 通常写这一个就可以了
题解:
试题A:门牌制作
解题思路:
一个主循环体从1循环到2020
用abcd记录i的每一位的数字
若数字中有2 则res++
用四个if语句的目的是防止漏掉答案
解题代码:

更简洁的代码:

试题B:既约分数
解题思路:
两层循环的嵌套,值得一说的是函数__gcd()的使用:
__gcd(x,y)是GNU的内部函数,不是一个标准库里的函数,平时写题直接用这个函数挺方便的,int、long long类型都可以,需要注意的是两个类型必须要相同,还有就是不能用浮点型,当然也可以手写gcd函数,它头文件是algorithm
解题代码:

试题C:蛇形填数
解题思路:
其实这一题在比赛时我并没有写程序而是找规律找出来的,对角线位置的值是1 5 13 每次都是加4的倍数 +4 +8 +12 +16…这样算个几次就到了20 所以比赛时我发现这个规律后就直接算出来了,没有写程序,当然作为学习还是需要写代码的 这种投机取巧只能关键时刻用一用
正经思路:根据题意,找出规律,主要顺着对角线上数字递增的方向看:行数从1开始算,当行数为奇数时,行数值比列数值大1的位置的数值小,即右上角大于左下角,沿着对角线向上递增;当行数为偶数时,行数值比列数值大1的位置数值大,即右上角小于左下角,沿着对角线向下递增;可以观察从(3,3)位置和(4,4)位置开始的对角线。
得出行列变化的规律,顺着这样的规律跟随行列值得变化递增每个位置的值。
i&1的意义是判断i的奇偶性,类似i%2但是用位运算会快很多,听说位运算可以提升60%的效率,要养成多用位运算的习惯
具体实现细节看代码:
解题代码:

试题D:跑步锻炼
解题思路:直接按题意进行日期的循环,然后判断
解题代码:

试题E:七段码
解题思路:实际上就是求连通图的子图数目,涉及到图,并查集和深度搜索相关知识点不了解的可以直接在CSDN上搜索充电,在此就不多加赘述,有很多博主都解释的很通俗易懂
解题代码:

试题F:成绩统计
解题思路:很简单不多说,唯一需要注意的就是输出的细节控制,代码中用了两种方法都是可以的
解题代码:

试题G:回文日期
解题思路:题意也比较好理解,就是代码稍微有点繁琐
解题代码:

试题H:子串分值和
解题代码:

试题I:平面切分
解题代码:

试题J:字串排序
解题代码:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月22日
下一篇 2021年3月22日

相关推荐