青少年软件编程(C语言)等级考试试卷(七级)
1、
翻转二叉树
迈克斯·豪威尔是 Mac 上著名软件 Homebrew 的作者,他去谷歌面试的时候,被每天使用他的软件工作的工程师给拒绝了,因为他没能在白板上写出翻转二叉树的代码……
现在你的机会来了,请证明你会写翻转二叉树(将树中每个结点的左右孩子互换)的程序!
时间限制:4000
内存限制:65536
输入
输入第一行给出正整数 N(≤ 10),是树中结点的个数(结点从 0 到 N-1 编号)。随后 N 行,第 $i$ 行(i=0, … , N-1)给出编号为 i 的结点的左、右孩子的编号。如果该孩子结点不存在,则在相应位置上用 - 表示。孩子结点间以一个空格分隔。
输出
首先将输入的二叉树进行翻转,然后第一行输出结果树的层序遍历序列,第二行给出其中序遍历序列。数字间必须以 1 个空格分隔,行首尾不得有多余空格。
样例输入
8
1 -
- -
0 -
2 7
- -
- -
5 -
4 6
样例输出
3 7 2 6 4 0 5 1
6 5 7 4 3 2 0 1
2、
电信诈骗
电信诈骗一直是一个令人头痛的社会问题,有时会令受害者失去一生的积蓄。为了阻止这种犯罪,请你编写程序,从海量的电话通话记录中筛查出犯罪嫌疑人。
一个通话用户被筛查为嫌疑人的规则是:这人每天向
不同的
人拨出超过 K 个短通话,但只有不超过 20% 的人会回拨。并且,如果两个嫌疑人互相通话,我们应将两人视为同伙。甲向乙拨出
短
通话的意思是,甲打给乙的通话时长不超过 5 分钟。
时间限制:5000
内存限制:65536
输入
输入第一行给出 3 个正整数:K (≤ 500,拨出短通话的阈值)、N (≤ 10
3
,不同的电话号码的数量)、M (\le 10
5
,通话记录的数量)。随后 M 行,给出一天内的通话记录,格式为: caller receiver duration 其中 `caller`(呼出者)和 `receiver`(接听者)从1 到 N 编号。通话时长 `duration` 最多不超过一天 1440 分钟。
输出
每行输出一伙嫌疑人的编号,按编号升序排列。嫌疑人团伙则按他们第一个成员的编号升序输出。同行数字间以 1 个空格分隔,行首尾不得有多余空格。 如果没有嫌疑人,则输出 `None`(表示“无”)。
样例输入
样例1:
5 15 31
1 4 2
1 5 2
1 5 4
1 7 5
1 8 3
1 9 1
1 6 5
1 15 2
1 15 5
3 2 2
3 5 15
3 13 1
3 12 1
3 14 1
3 10 2
3 11 5
5 2 1
5 3 10
5 1 1
5 7 2
5 6 1
5 13 4
5 15 1
11 10 5
12 14 1
6 1 1
6 9 2
6 10 5
6 11 2
6 12 1
6 13 1
样例2:
5 7 8
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
2 1 1
3 1 1
样例输出
样例1:
3 5
6
样例2:
None
提
2024 年12 月 C语言等级考试 7级真题