一、单项选择题(每题只有一个正确选项,每题2分,共30分)
二、程序阅读理解题(共3大题。程序输入不超过数组或字符串定义的范围,除特殊说明外,判断题1.5分,选择题3分,共计40分)
(1)(9.5分)
题目保证输入均为正整数
l判断题
(2)(13.5分)
输入保证 r 大于等于 l,且 l,r 均为正数。
(3)(17分)
假设输入的是个小数,且如果有括号,则括号内表示无限循环部分
三、程序完善题(共2大题,每个选择题3分,共计30分)
1.(求众数)给出一个数字 $n$,接下来给出 $n$ 个数字,求这 $n$ 个数字中出现次数最多的数字。
提示:先排序数组,使得所有相同的数字在连续的一段。然后统计每一段数字的长度,最长的长度对应的数字即为众数。
2.(数组选数)给定一个大小为 n 的数组和一个数字 k,问能否从这些数字中取到一些数字使得其和为 k。若能,输出 YES,否则输出 NO。
输入第一行包含两个正整数 n,k,接下来一行包含 n 个正整数,表示数组的内容。
提示:使用分治的思想来做,将数组切割成多段子数组。对于每一段子数组,都新建一个 bool 类型的 ans 数组用于保存每个数字能否被取到,再合并多段子数组算出的 ans 数组,最终合并成一个总的 ans 数组,判断 ans[k] 是否为 1,则可以得到答案。
评价对象得分