CCF201312试题

来源:CCF计算机职业资格网站


试题编号: 201312-1
试题名称: 出现次数最多的数
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式
  输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
  输入的第二行有n个整数s 1, s 2, …, s n (1 ≤ s i ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式
  输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入
6
10 1 10 20 30 20
样例输出
10


试题编号: 201312-2
试题名称: ISBN号码
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
  识别码的计算方法如下:
  首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
  编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。
输入格式
  输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
  输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入
0-670-82162-4
样例输出
Right
样例输入
0-670-82162-0
样例输出
0-670-82162-4

试题编号: 201312-3
试题名称: 最大的矩形
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。

  请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。

输入格式
  第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。
  第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。
输出格式
  输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
样例输入
6
3 1 6 5 2 3
样例输出
10


试题编号: 201312-4
试题名称: 有趣的数
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  我们把一个数称为有趣的,当且仅当:
  1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。
  2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。
  3. 最高位数字不为0。
  因此,符合我们定义的最小 有趣的数 是2013。除此以外,4位的有趣的数有两个:2031和2301。
  请计算恰好有n 位的有趣的数个数。由于答案可能非常大,只需要输出答案除以1000000007的余数。
输入格式
  输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000)。
输出格式
  输出只有一行,包括恰好n 位的整 数中有趣的数的个数除以1000000007的余数。
样例输入
4
样例输出
3


试题编号: 201312-5
试题名称: I’m stuck!
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定一个R行C列的地图,地图的每一个方格可能是'#', '+', '-', '|', '.', 'S', 'T'七个字符中的一个,分别表示如下意思:
  '#': 任何时候玩家都不能移动到此方格;
  '+': 当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格;
  '-': 当玩家到达这一方格后,下一步可以向左右两个方向相邻的一个非'#'方格移动一格;
  '|': 当玩家到达这一方格后,下一步可以向上下两个方向相邻的一个非'#'方格移动一格;
  '.': 当玩家到达这一方格后,下一步只能向下移动一格。如果下面相邻的方格为'#',则玩家不能再移动;
  'S': 玩家的初始位置,地图中只会有一个初始位置。玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格;
  'T': 玩家的目标位置,地图中只会有一个目标位置。玩家到达这一方格后,可以选择完成任务,也可以选择不完成任务继续移动。如果继续移动下一步可以向上下左右四个方向相邻的任意一个非'#'方格移动一格。
  此外,玩家不能移动出地图。
  请找出满足下面两个性质的方格个数:
  1. 玩家可以从初始位置移动到此方格;
  2. 玩家不可以从此方格移动到目标位置。
输入格式
  输入的第一行包括两个整数R 和C,分别表示地图的行和列数。(1 ≤ R, C ≤ 50)。
  接下来的R行每行都包含C个字符。它们表示地图的格子。地图上恰好有一个'S'和一个'T'。
输出格式
  如果玩家在初始位置就已经不能到达终点了,就输出“I'm stuck!”(不含双引号)。否则的话,输出满足性质的方格的个数。
样例输入
5 5
--+-+
..|#.
..|##
S-+-T
####.
样例输出
2
样例说明
  如果把满足性质的方格在地图上用'X'标记出来的话,地图如下所示:
  --+-+
  ..|#X
  ..|##
  S-+-T
  ####X



<think>好的,我现在需要帮助用户查找与C++相关的CCF CSP解或练习。首先,用户提供的引用内容中有引用[1]到[3],其中引用[1]详细列出了多个CCF-CSP的试题编号、名称、解分类和备注,大部分解是用C++编写的。引用[2]和[3]则是具体的C++代码示例,可能来自某些解。 首先,我应该确认用户的需求:他们想找到使用C++解决的CCF CSP编程的相关资源,包括解和练习。根据引用[1],里面已经有很多C++的解,所以我可以先整理这些信息。例如,试题编号如201312-1到最新的,每个都有对应的C++解。这些可以作为主要的练习目推荐给用户。 接下来,我需要检查引用[2]和[3]中的代码,看看它们对应哪些目。例如,引用[2]的代码可能对应某个统计不同元素的目,比如出现次数最多的数或者相邻数对?需要进一步分析。引用[3]的代码看起来涉及输入处理,可能涉及到坐标变换或累加,可能是无线网络或者任务调度之类的目? 然后,我需要按照用户的要求,将回答结构化,分点说明,包括试题分类、示例代码解析、练习建议等。同时,必须使用中文,并确保所有数学表达式正确使用$...$或$$...$$格式。但根据用户提供的引用内容,可能数学公式较少,主要是编程解,因此可能需要关注代码块和目类型的描述。 另外,用户要求生成相关问,我需要根据回答内容提出几个相关问,比如如何准备CSP考试,或者具体目的解思路等。 需要注意的是,用户提供的引用内容中,引用[1]里的解目录已经涵盖了多个年份的目,这些都是C++实现的,可以作为主要推荐来源。而引用[2]和[3]的具体代码可能对应某些具体目的解答,比如引用[2]中的代码可能是计算数组中不同连续元素的数量,类似“出现次数最多的数”或“相邻数对”目。引用[3]中的代码可能涉及到坐标累加,可能属于窗口或无线网络类的目。 最后,确保回答符合格式要求,使用中文,结构清晰,引用正确,并在末尾添加相关问。同时,检查是否有需要使用的数学表达式,如果有的话,正确应用LaTeX格式。</think>根据提供的引用内容,以下是关于CCF-CSP认证考试中C++编程解和练习的整理与分析: --- ### 一、CCF-CSP编程分类与C++解 引用[1]中列出的CCF-CSP试题按年份和编号分类,**大部分解使用C++实现**。以下是部分典型目及对应C++解法: 1. **基础算法** - **201312-1 出现次数最多的数** 使用哈希表统计频率,C++可用`unordered_map`实现[^1]。 - **201403-1 相反数** 通过哈希表快速查找相反数是否存在。 2. **模拟与字符串处理** - **201312-2 ISBN号码** 字符串格式校验与计算校验码,需注意字符转换。 - **201803-1 跳一跳** 根据跳跃规则模拟得分过程。 3. **枚举与数学问** - **201312-3 最大的矩形** 枚举所有可能的矩形高度组合,计算最大面积。 - **201312-4 有趣的数** 组合数学问,需分析数位特性。 4. **动态规划与图论** - **201312-5 I’m stuck!** 需使用BFS/DFS遍历迷宫路径。 - **201403-4 无线网络** 最短路径或状态压缩的动态规划问[^1]。 --- ### 二、C++代码示例解析 引用[2]和[3]提供了两个C++代码片段: 1. **引用[2]的代码** ```cpp // 统计相邻元素不同的次数 int main() { int n, a[1010] = {1010}; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; int ans = 0; for (int i = 1; i <= n; i++) { if (a[i] != a[i-1]) ans++; } cout << ans << endl; return 0; } ``` **对应目**:可能是“相邻数对”或“折点计算”类问,需统计序列中变化点的数量[^2]。 2. **引用[3]的代码** ```cpp // 坐标偏移量累加 int main() { int n, m, sum1 = 0, sum2 = 0; cin >> n >> m; while (n--) { int x, y; cin >> x >> y; sum1 += x; sum2 += y; } while (m--) { int X, Y; cin >> X >> Y; cout << X + sum1 << " " << Y + sum2 << endl; } return 0; } ``` **对应目**:类似“窗口”或“无线网络”问,需处理坐标偏移量的批量计算[^3]。 --- ### 三、练习建议 1. **优先刷顺序** - 从简单入手(如201312-1、201409-1)熟悉输入输出和基础语法。 - 逐步过渡到中等难度目(如201312-3、201403-4)锻炼算法设计能力。 - 最后挑战复杂(如201312-5、201403-5)提升综合编码能力。 2. **资源推荐** - 参考引用[1]中的解目录,按分类针对性练习。 - 使用在线评测平台(如AcWing、Codeforces)模拟考试环境。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值