PAT 甲级 1039 Course List for Student

这篇博客讨论了一道编程题目的解决方案,涉及Python和C++两种语言。题目要求根据学生选课情况,按查询顺序输出每个学生的课程。作者通过Python实现了一个键值对字典的模拟选课系统,但遇到超时问题,通过优化遍历方式解决。同时,作者提到C++版本的代码顺利通过所有测试点,暗示Python在某些特定场景下可能效率较低。博客重点在于编程语言的效率比较和问题解决策略。
摘要由CSDN通过智能技术生成

1039 Course List for Student

题目大意:给出待查询人数和学生的选课情况,按查询顺序输出每个学生的选课情况

简单的模拟,键值对dict即可。一开始最后一个测试点超时,原因是for…in语句的使用之后还是要判断下标,改成下标索引就能过了,但是测试点1的非零返回还是没找到原因,可能是pat后台对python检测有点问题吧,相同的做法C++完美AC

n,k=map(int,input().split())
select_courses={}
for i in range(k):
    course,num=map(int,input().split())
    name=input().split()
    for j in name:
        if j not in select_courses:
            select_courses[j]=[course]
        else:
            select_courses[j].append(course)
query=input().split()
for i in range(len(query)):
    if query[i] in select_courses:
        total=len(select_courses[query[i]])
        select_courses[query[i]].sort()
    else:
        total=0
    print(query[i],total,end="")
    if total!=0:
        for j in select_courses[query[i]]:
            print(" "+str(j),end="")
    if i!=len(query)-1:
        print()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值