2016年第七届蓝桥杯省赛(C/C++) A组试题及参考答案
第七届蓝桥杯省赛结束了,趁着还有点印象,赶紧把答案记一下。
欢迎加入à编程学习交流QQ群:23228338,一起交流蓝桥杯答案及编程交流学习。群文件有答案下载
1.父亲和儿子(枚举)
父亲的年龄两个数字交换一下得到儿子的年龄,并且父亲的年龄减去儿子的年龄为27,求有几种情况(30 和3也算一种)。
2.生日蜡烛(枚举)
一个人从某一岁开始每年生日都在蛋糕上插上与年龄数值相同的蜡烛,下载他总共插了236根蜡烛,问他从多少岁时开始插蜡烛?
直接从1岁开始枚举,找到答案就停止
3.填格子(DFS)
有一个含有10个格子的图形,现用0~9填充,连续的数不能填充在相邻的格子中(包括对角线相邻),问有多少种填充方法?
dfs即可,注意剪枝,就能秒出
4.快速排序
数据结构学过,这么快又忘了,还看了半天...
swap(a,p,j);
代码填空,快速排序,这道题,如果知道快速排序的基本思想的话比较好想,当然题目描述里面其实说的就是它的思想,只是比较抽象
我写的是:
swap(a,p,j)
在机器上运行代码,确实实现了排序
5.去掉尾1
如果一个数二进制表示时,若个位是1,则去掉从个位起开始的连续的1,若个位不是1,则不变
答案是:x&(x+1)
很简单的答案,可是当时一点都没想到,自己想的是用3元运算符,连续嵌套31次实现这个功能,由于每次代码都一样,所以用循环生成代码,最后交了700多B...
6、后面的记不太清楚了,我记得有一道叫做寒假作业,是用1到13这13个数字构成加减乘除四个算式,并且不能重复使用数字。
我用的是暴力破解,直接六重循环,模拟每一个位置的数字,只要验证给出1到13中用掉了12个数字即认为符合要求,代码太长,不记得了,我求出来的应该是:64
7.剪邮票(DFS)
有一个3*4的十二生肖邮票,剪下连续的5个(对角相连不算),问有多少种方法?
dfs即可,只需要注意判重(当时先用map[已经排过序],结果不管一种剪法出现多少次都是显示为出现,最后自己写了个暴力判断才行...)