| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 17883 人关注过本帖, 8 人收藏
标题:第四届蓝桥杯本科B组C语言题
只看楼主 加入收藏
sala0127
Rank: 2
等 级:论坛游民
帖 子:56
专家分:52
注 册:2011-11-8
结帖率:85.71%
收藏(8)
已结贴  问题点数:100 回复次数:100 
第四届蓝桥杯本科B组C语言题
论坛里已经有A组的题了,这个是B组的题。我大题的第八第十题都用穷举了,在大数据量下肯定过不了了
2013蓝桥杯C语言本科组B.rar (8.19 KB)
搜索更多相关主题的帖子: C语言 
2013-05-07 15:59
sala0127
Rank: 2
等 级:论坛游民
帖 子:56
专家分:52
注 册:2011-11-8
收藏
得分:0 
跪了第一小题+第四小题+第九大题。其他的大题又都是穷举做的。。这下悲剧了,估计得跪
2013-05-07 16:02
sala0127
Rank: 2
等 级:论坛游民
帖 子:56
专家分:52
注 册:2011-11-8
收藏
得分:0 
大家做一下,讨论一下
2013-05-07 16:12
代码天空
Rank: 2
等 级:论坛游民
帖 子:4
专家分:30
注 册:2013-5-5
收藏
得分:0 
为神马两套题的第九题我都没看懂。。
2013-05-07 16:33
代码天空
Rank: 2
等 级:论坛游民
帖 子:4
专家分:30
注 册:2013-5-5
收藏
得分:0 
好吧看漏了一个字,我输了。。承认已经被整晕了,还是请大神指教吧。。
2013-05-07 16:36
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,这两天有意思的东西还挺多。可惜到饭点儿了,吃完回来看看这B组题和A组题相比怎么样。

重剑无锋,大巧不工
2013-05-07 17:58
sala0127
Rank: 2
等 级:论坛游民
帖 子:56
专家分:52
注 册:2011-11-8
收藏
得分:0 
回复 6楼 beyondyf
期待B版大神的思路
2013-05-07 18:08
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 7楼 sala0127
呵呵,这就开始,给我点时间组织一下语言。

重剑无锋,大巧不工
2013-05-07 18:46
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:100 
第一题,高斯日记。A组里有这题,日期计算在论坛里不知讨论过多少次了,不再赘述。

第二题,马虎的算式。考试中这题我建议用最简单的方法暴力穷举。无非是一个两位数乘一个三位数。十万的运算量,计算机也就用一两个毫秒就搞定了,而编写这样的代码也不过一两分钟的时间。当然进一步的分析可以提高运算效率,但能缩短的时间最多也就一两毫秒。而你消耗在算法分析上的时间会是多少呢?呵呵,要学会权衡。

第三题,第39级台阶。递推题。设上到第n级台阶走奇数步的走法为a(n),走偶数步的走法为b(n)。那么,
a(n) = b(n-1) + b(n-2)
b(n) = a(n-1) + a(n-2)
边界条件
a(0) = 0 b(0) = 0
a(1) = 1 b(1) = 0
题目要的结果是b(39)

第四题,黄金连分数。考察的是大数除法,这我没什么好方法,模拟手工竖式除法。关于这个在以前我和老杨(laoyang103)有过一次专门的讨论,帖子中我给出了一个通用的大数除法函数。不过这题里分子总是1,所以可以简化计算过程。需要注意的是为保证足够的精度实际计算时要比要求的多算几位,不必太多,这题多算两位就足够了。

第五题,前缀判断。就不解释了。*(haystack++) != *(needle++)

第六题,三部排序。我好像在论坛里贴过类似的ACM题目的代码。p++

第七题,错误票据。也是A组题里的题目,不再赘述。

第八题,翻硬币。按如下规则统计就可以了。原理相当于解一个线性方程组,在论坛中我写过一篇详细讨论关于点灯游戏的贴子,和这个问题原理相同,不过更复杂,那是个二维平面内的矩阵,翻转一个位置会同时翻转与它相邻的上下左右四个位置。有兴趣的可以找找那个贴子。
具体步骤:
从第一个硬币开始,对比目标状态相应的位置,如果不同则翻转这个硬币(这个动作其实可以省去)及下一个硬币,统计一次翻转;如果相同则转到下一个硬币。
当转到最后一个硬币时与目标状态不同,则这组序列无解,即无论如何不可能翻转成目标状态。如果相同则有解,解为之前统计的总和。当然,题目给出的序列应该是都有解的。

第九题,带分数。呵呵,考试中也建议使用暴力穷举。但别从0到987654321穷举,题目是有时间限制的,3秒钟完成不了9亿多次运算。这个要配合全排列来做,在每组全排列中再选两个位置插入加法运算和除法运算。运算量是9! * C(8,2),千万量级,可以满足性能需求。而且这个过程中由加号分割的左半段不能超过目标值,由除号分割的左半段长度不能小于右半段,即除法的结果不能小于1。由这两个条件剪枝还可以进一步减少运算量。综合判断总的运算量估计在百万量级,应该可以在1秒内完成。

第十题,连号区间数。分值最高的题,也是最难的题。目前我也没什么更好的思路,只能一个区间一个区间的统计。这里可以利用一个条件加快统计速度:当一个区间中的最大值与最小值的差等于区间的长度减1时,它必是一个连号区间,否则不是。先把这些发上来,我再想想,也期待看到众坛友的好方法。

重剑无锋,大巧不工
2013-05-07 19:58
sala0127
Rank: 2
等 级:论坛游民
帖 子:56
专家分:52
注 册:2011-11-8
收藏
得分:0 
回复 9楼 beyondyf
第四题如何确保前100位是正确的呢?就是如何确定要做多少次除法?
第十题我想动规,用二维数据记录区间是否满足要求。
必须吐槽下第八题。。。题目写输出最少的翻转次数,我还以为会有多种可能。。就想都没想就去穷举。。结果却是只有唯一解只需扫描一遍就行了。。
2013-05-07 20:16
快速回复:第四届蓝桥杯本科B组C语言题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023578 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved