理论卷2022年9月青少年软件编程(C\C++) · 四级

YLT C++ 4级 2022.09

满分 100 · 及格 60 · 时长 60 分钟 · 共 4 题 (编程题4)
试卷阅览 · 免费预览前 10 题 · 交卷后可查看答案与解析
1
编程题题号 #22385
分值 25

N5473 [CIE 202209 四级 T1] 最长上升子序列

题目描述

一个数的序列 bib_i,当 b1<b2<…<bSb_1 < b_2 < … < b_S 的时候,我们称这个序列是上升的。对于给定的一个序列 (a1,a2,…,aN)(a_1, a_2, …, a_N),我们可以得到一些上升的子序列 (ai1,ai2,…,aiK)(ai_1, ai_2, …, ai_K),这里 1≤i1<i2<…<iK≤N1 \leq i_1 < i_2 < … < i_K \leq N。比如,对于序列 (1,7,3,5,9,4,8)(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如 (1,7)(1, 7), (3,4,8)(3, 4, 8) 等等。这些子序列中最长的长度是 44,比如子序列 (1,3,5,8)(1, 3, 5, 8). 你的任务,就是对于给定的序列,求出最长上升子序列的长度。

输入格式

输入的第一行是序列的长度 NN (1≤N≤1000)(1 \leq N \leq 1000)。
第二行给出序列中的 NN 个整数,这些整数的取值范围都在 00 到 1000010000。

输出格式

最长上升子序列的长度。

样例

样例 1
输入:

7
1 7 3 5 9 4 8

输出:

4

提示

无

2
编程题题号 #22386
分值 25

N5474 [CIE 202209 四级 T2] 神奇的口袋

题目描述

有一个神奇的口袋,总的容积是 4040,用这个口袋可以变出一些物品,这些物品的总体积必须是 4040。John\text{John} 现在有 nn 个想要得到的物品,每个物品的体积分别是 a1,a2⋯ana_1,a_2 \cdots a_n。John\text{John} 可以从这些物品中选择一些,如果选出的物体的总体积是 4040,那么利用这个神奇的口袋,John\text{John} 就可以得到这些物品。现在的问题是,John\text{John} 有多少种不同的选择物品的方式。

输入格式

输入的第一行是正整数 nn (1≤n≤20)(1 \leq n \leq 20),表示不同的物品的数目。接下来的 nn 行,每行有一个 11 到 4040 之间的正整数,分别给出 a1,a2⋯ana_1,a_2\cdots a_n 的值。

输出格式

输出不同的选择物品的方式的数目。

样例

样例 1
输入:

3
20
20
20

输出:

3

提示

无

3
编程题题号 #22387
分值 25

N5475 [CIE 202209 四级 T3] 滑雪

题目描述

Michael\text{Michael} 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael\text{Michael} 想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为 24−17−16−124-17-16-1。当然 25−24−23−…−3−2−125-24-23-…-3-2-1 更长。事实上,这是最长的一条。

输入格式

输入的第一行表示区域的行数 RR 和列数 C(1≤R,C≤100)C(1 \leq R,C \leq 100)。下面是 RR 行,每行有 CC 个整数,代表高度 hh,0≤h≤100000\leq h\leq 10000。

输出格式

输出最长区域的长度。

样例

样例 1
输入:

5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

输出:

25

提示

无

4
编程题题号 #22388
分值 25

N5476 [CIE 202209 四级 T4] 删除数字

题目描述

娇娇一年级了,刚刚学会了识数和比大小。有一天,她在黑板上写上了一串数字:2,1,2,5,42,1,2,5,4。接着她擦掉了第一个 22,发现剩下 1,2,41,2,4 都在自己的位置上,即:11 在第 11 位,22 在第 22 位,44 在第 44 位。
娇娇希望擦掉某些数后,剩下的数列中在自己位置上的数尽量多。她发现这个问题很有趣,想知道最多能有几个数在自己的位置上,请你帮帮她!

输入格式

第一行,一个整数 TestNumTestNum (≤10)( \leq 10),表示测试数据的组数。 接下来每组数据有两行,第一行:一个整数 n(≤1000)n( \leq 1000),第二行:nn 个正整数 (≤1000)(\leq 1000)。

输出格式

对于每组测试数据,输出一个数表示答案。

样例

样例 1
输入:

3
5
2 1 2 5 4
7
2 2 3 2 4 5 3
10
1 1 2 2 3 3 4 4 5 5

输出:

3
4
5

提示

第一组测试数据:擦掉第一个数,1 2 41\ 2\ 4 有 33 个数在自己的位置上。
第二组测试数据:擦掉第 44 个、第 77 个数,2 3 4 52\ 3\ 4\ 5 有 44 个数在自己的位置上。
第三组测试数据:每种相同的数擦掉一个,1 2 3 4 51\ 2\ 3\ 4\ 5 有 55 个数在自己的位置上。

海小星AI平台海小星AI平台

点亮AI梦想,编程未来之星。专业的青少年AI编程教育平台。

课程方向

  • AIGC人工智能
  • Scratch图形化
  • Python编程
  • C++/NOIP竞赛

联系我们

  • 北京市西城区万博苑7号楼3层F28室
  • +86-010-83553010
  • contact@seanova.cn

© 2026 海小星AI平台|京ICP备2022032747号

隐私政策服务条款