2022年计算机能力挑战赛C语言决赛试题

选课组合
大学选课可以选择不同的课程。小许本学期计划选修K门课程且希望学分尽可能多。由于有些课程的关系密切,这些课程构成一个课程包(课程包的课程必须同时选,同一门课程不会在不同的课程包中同时出现)。假定这学期有N门课程,其中包括M个课程包,各课程的上课时间相互不冲突,请帮他选择K门课程可以获得的最高总学分。

输入说明:第一行是三个整数N(3<=N<=50),M(1<=M<=50)和K(1<=K<=10),之后是N行,每行包括课程的编号(非0开始的4位数字编码)、课程的学分,中间用空格隔开;之后M行是课程包信息,每行包括多门课程编号,以0结束。
输出说明:输出可获得的最高总学分(精确到小数点后1位)。

输入样例:
5  1  3
2503  2.5
2701  3.0
2301  2.5
2702  1.0
2506  2.0
2701  2702 0

输出样例:
7.0

选课次序
    大学有很多专业课程,某些专业课程之间依赖关系,例如修完《程序设计语言》之后方可选修《数据结构》。小许计划顺序选修K门专业课程,他的选课原则如下:首先查看当前可选课程(即该课程所有依赖的课程都已修完),如果有多门可选修课程,则优先选择一门学时最少的课程;选修之后可能会有依赖该课程的其它课程可被选择,他会继续按照学时最少原则选课,如此往复,直到选出K门课为止。现在给出所有课程的和课时(均不相同),以及课程间的依赖关系。各课程的上课时间相互不冲突。请按他的选课原则,选出K门课程。
输入说明:第一行是三个整数,表示N门课(3<=N<=50)、M个依赖关系(1<=M<=50)和计划选修K门课(1<=K<=10);之后是N行,每行包括课程的名称(不超过20位的字符串)、课程的学时(整型);再后M行是课程之间的依赖关系,包括两门课程名称CA和CB,表示选修CB之前一定要选修CA。
输出说明:输出选出K门课程总学时S
          
输入样例:
4  2  2
DM  32
CP   32
ABC  32
CPD  20
CP  CPD
CP  DM
输出样例:
52


某字符串描述了一种树结构,其规则为:每个节点都有由数字或小写字母组成的名字和其后的中括号组成;中括号内部为其子节点的嵌套描述;若中括号内无内容则其为叶子节点。如root[leaf1[]leaf2[]]描述root节点和其两个子节点leaf1和leaf2。输入一棵树的描述字符串,和层数i,输出该层的所有节点名字。

输入说明:
第一行输入一棵树的描述字符串 (长度≤200)
第二行输入层号(从1开始计数,,即根节点在第一层。保证这层会有节点)
输出说明:
按字符串中出现顺序该层所有节点,中间以一个空格隔开 
输入样例:
root[leaf1[]branch[leaf2[]]] 
2
输出样例:
leaf1 branch

某字符串描述了一种树结构,其规则为:每个节点都有由数字或小写字母组成的名字和其后的中括号组成;中括号内部为其子节点的嵌套描述;若中括号内无内容则其为叶子节点。如root[leaf1[]leaf2[]]描述root节点和其两个子节点leaf1和leaf2.输入一棵树的描述字符串,和某一个节点名字,求解该节点在树中的层数。

输入说明:
第一行输入一棵树的描述字符串 (长度≤200)
第二行节点名字
输出说明:
节点所在层数(从1开始计数,即根节点在第一层)
输入样例:
root[leaf1[]branch[leaf2[]]] 
leaf2
输出样例:
3


现有M组正整数序列(每组整数序列的长度均不超过N),要求针对每组序列进行如下操作:删除该序列数值排名前K大的数据(相同数值排名时只记1次,若处于前K大的位置,则全部删除。),并把后续数据向前顺移,空出来的位置全部补0。要求输出处理后的这M组整数序列。
输入说明:第一行是正整数M(1&lt;M&lt;=100)和正整数K;
          第二行是M个正整数N1, N2,…,Ni,…,NM,Ni(1&lt;=Ni&lt;=10000, 1&lt;=i&lt;=M)表示第i组整数序列的长度;
后续分M行输入这M组正整数序列;
输出说明:分M行,依次输出经过操作后的M组整数序列,每行输出一组序列。
输入样例:


2 3


5 6


5 4 3 2 1


1 1 2 4 3 3
输出样例:


2 1 0 0 0


1 1 0 0 0 0

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值