【pta打印选课学生(python版) 基于python3.0】

2023-11-05

pta打印选课学生(python版)

题目介绍

假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。

输入格式:
输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。

输出格式:
顺序输出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号和选课学生总数(之间用空格分隔),之后在第二行按字典序输出学生名单,每个学生名字占一行。

输入要求

10 5
ZOE1 2 4 5
ANN0 3 5 2 1
BOB5 5 3 4 2 1 5
JOE4 1 2
JAY9 4 1 2 5 4
FRA8 3 4 2 5
DON2 2 4 5
AMY7 1 5
KAT3 3 5 4 2
LOR6 4 2 4 1 5

输出要求

1 4
ANN0
BOB5
JAY9
LOR6
2 7
ANN0
BOB5
FRA8
JAY9
JOE4
KAT3
LOR6
3 1
BOB5
4 7
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1
5 9
AMY7
ANN0
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1

问题分析

针对排序问题,我首先想到python中的列表,为我们提供存储
而在python中,函数:列表.sort 无疑是人名字典序的最简单的方法
len(列表) 函数是返回选课人数的方法 根据上述函数,我们不妨将数据存在一个二维列表中,在根据选课编号选择对应的列表添加人名,在最后打印结果
在选择课程对应的数组时,类似于杂凑表的思想,由选课编号对应数组下标,实现人名的分类
在代码量与思想上,python的解决方法明显更加优于c语言,但作为数据结构这门课而言,python只是一种取巧的方式,还是要明白算法的含义
在后期,程序有一点限制,起初我以为是语言本身限制的,后来查阅其他人的方法,发现即使用c仍无法避免这个困境,在后面,我将指出该困境

具体代码

n,m=map(int,input().split())
test=[[]*m for i in range(n)]
g=[[] for v in range(m)]
for p in range(n):
    test[p]=[q for q in input().split()]
    for j in range(2,len(test[p])):
        k=int(test[p][j])-1
        test[p][j]=0
        g[k].append(test[p][0])
for h in range(n):
      test[h][0]=0
for f in range(m):
    print("%d"%(f+1),end=" ")
    print("%d"%(len(g[f])))
    g[f].sort()
    for t in g[f]:
        print(t)

实验结果

测试点五就是前文中的困境
是不是觉得python代码特别简洁呀
测试点5是这道题的困境,应为很容易内存超限
通过看别人的博客,我发现即使大家用c语言写仍会有这种情况,后来发现一位兄弟在博客中写道 :及时释放不需要的内存侥幸过了
收到他的影响,我释放了不需要的二维数组,果然可以通过测试点
不信的话 你可以把

for p in range(n):
    test[p]=[q for q in input().split()]
    for j in range(2,len(test[p])):
        k=int(test[p][j])-1
        test[p][j]=0
        g[k].append(test[p][0])
for h in range(n):
      test[h][0]=0

中的

test[p][j]=0

for h in range(n):
      test[h][0]=0

删去试一试

分析一下

是这样的,在c语言中,针对用户自己申请的空间,利用 free() 才可以释放,而在python中,利用其”每部元素全为零则回收“的垃圾回收机制,减少程序的内存,我看了一下,应该能节省大概一半的空间
在这里插入图片描述
在这里插入图片描述
由此可见,即使释放内存就是这道题的关键点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【pta打印选课学生(python版) 基于python3.0】 的相关文章

  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Python:当前目录是否自动包含在路径中?

    Python 3 4 通过阅读其他一些 SO 问题 似乎如果moduleName py文件位于当前目录之外 如果要导入它 必须将其添加到路径中sys path insert 0 path to application app folder
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例 - wx新手

    我正在学习 python 并尝试使用 wxpython 进行 UI 开发 也没有 UI exp 我已经能够创建一个带有面板 按钮和文本输入框的框架 我希望能够在文本框中输入文本 并让程序在单击按钮后对输入框中的文本执行操作 我可以获得一些关
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Pandas 在特定列将数据帧拆分为两个数据帧

    I have pandas我组成的 DataFrameconcat 一行由 96 个值组成 我想将 DataFrame 从值 72 中分离出来 这样 一行的前 72 个值存储在 Dataframe1 中 接下来的 24 个值存储在 Data
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt

随机推荐

  • UE4 伤害事件,不同部位不同伤害(C++)

    UE4 伤害事件 不同部位不同伤害 C 可以先看射线检测 效果 打头和身体有不同的伤害 前面设置部分 先设置项目设置里的物理的Physical Surface 添加好身体的部位 2 添加了几个就几个变量 设置好它们的表面类型 3 找到被伤害
  • 第1章 数据库系统概论---数据库原理及应用

    目录 课程学习目标 本课程教学内容 课程教材 课程实践使用的数据库软件 第1章 数据库系统概论 1 数据库系统概述 一 基本概念 数据 文字 图片等数据化后存入计算机 数据库 DB 按一定的数据模型组织的共享数据 数据库管理系统 DBMS
  • python 读写hive

    最近正在 做一个 项目 需要把 算法模型的结果持久化 至hive 目前 使用的 pyhive 切记 在windows上不能使用 我目前在centos6 5上使用 官方说再macos和linux上可用 from pyhive import h
  • Vue中filter函数 过滤器的使用

    filters是什么 filters顾名思义是一个过滤器 就是对数据进行过滤筛选 将数据转化为我们想要的格式 但是他不会改变原始数据 filters分为两类 一 局部过滤器 局部过滤器的特点 只能作用于本组件没内 定义局部过滤器 在本组件内
  • Flutter和Android中的View

    在Android中 View是屏幕上显示的所有内容的基础 按钮 工具栏 输入框等一切都是View 在Flutter中 View相当于是Widget 然而 与View相比 Widget有一些不同之处 首先 Widget仅支持一帧 并且在每一帧
  • python3「非阻塞socket」报错 “BlockingIOError: [Errno 11]“ 复现以及分析解决

    梦想还在 生活当继续 一 前言 linux 下 用 python 的非阻塞 socket 通信时 遇到了 BlockingIOError Errno 11 Resource temporarily unavailable 错误 翻译报错信息
  • 链表-真正的动态数据结构

    创建节点 public class Node T val Node next public Node T val Node next this val val this next next public Node this null nul
  • keycloak~11.3.0之后微信认证问题解决

    基于keycloak11 0 3版的微信认证的实现 而在升级到keycloak14 0 0之后 这个认证出现了问题 原因是因为人家keycloak内部源码又变了 影响类文件 server spi private src main java
  • JS导出Excel自动获取table页面数据自动获取,并进行单元格合并行,列

    JS获取table页面数据自动获取 并进行单元格合并行 列 自己在百度上看的 感觉还可以 自己吧下面的代码复制就可以用了 关于无法启动Excel问题 这是HTML页面
  • 服务器定期巡检项目,服务器定期巡检制度..docx

    服务器定期巡检制度 服务器定期巡检制度为了保证省内各网点服务器正常 有序 安全运转 提升工作效率 保障客户能够更好的应用汇信科技产品及相关服务 特制定本制度 对服务器巡检加以规范 服务器由专人负责统一管理和日常维护 其他员工未经允许 不得擅
  • 两个一元多项式相加(链表

    顺序表实现 include
  • 2020 年最具潜力的 44 个顶级开源项目

    来源 AI开发者 本文约为7600字 建议阅读10分钟 本文给开发者提供了详细的各领域工具并整理了清单11 种极具潜力的 AI 工具类型 工欲善其事必先利其器 这也是大部分开发者在日常工作中最重要开发原则 选择与开发内容相匹配的工具 常常会
  • VUE路由传参的三种基本方式

    vue中路由传参的三种基本方式 在vue项目中我们在路由中需要接触到最多的就是路由之间的传值 在这里主要介绍了vue自带的路由传参的3种基本方式 场景一 单击当前页的按钮跳转到另一个页面 并将数据传到另一个页面 div class btn
  • navicat premium 连接oracle_详解navicat工具实现Oracle数据库结构同步

    概述 Navicat 是一套快速 可靠并价格相宜的数据库管理工具 专为简化数据库的管理及降低系统管理成本而设 Navicat提供多达 7 种语言供客户选择 被公认为全球最受欢迎的数据库前端用户界面工具 Navicat旗下有多个产品成员 可以
  • Adobe illustrator2022(Ai2022)新增功能

    使用 Adobe Substa nce 材质添加纹理 使用 Substance 材质为图稿添加纹理 并创建逼真的 3D 图形 您可以添加自己的材质 也可以从数以千计的 Sub stance 材质资源中进行选择 无缝激活缺失字体 现在 您可以
  • md5 通用工具类

    目录 Java版本 js版本 简介 MD5加密工具类 效果展示 Java版本 import java security MessageDigest title java MD5工具类 author wanglei21 since 2023
  • 从零到一搭建Kconfig配置系统

    从零到一搭建Kconfig配置系统 背景说明 最早接触到Kconfig是在zephyr项目中 之后陆续知道linux和RT Thread等项目都是用Kconfig来管理编译的 而自己也陆续有大型项目开发需要 了解过后对其使用愈发感兴趣起来
  • 什么是计算卸载

    简言 为了应对终端设备处理能力不足 资源有限等问题 业界在移动边缘计算 MEC 中引入了计算卸载概念 边缘计算卸载即用户终端 UE 将计算任务卸载到MEC网络中 主要解决设备在资源存储 计算性能以及能效等方面的不足 0 1 背景 随着科技的
  • 中兴Blade V2021 5G 刷机root教程 ZTE 8012N root 线刷包下载TWRP 刷入

    中兴Blade V2021 5G 刷机root教程 ZTE 8012N root 线刷包下载TWRP 刷入 中兴 ZTE V2021 5G深空灰 6GB 128GB 全网通4800万高 手机 gt 中兴 gt 中兴Blade V2021 6
  • 【pta打印选课学生(python版) 基于python3.0】

    pta打印选课学生 python版 题目介绍 假设全校有最多40000名学生和最多2500门课程 现给出每个学生的选课清单 要求输出每门课的选课学生名单 输入格式 输入的第一行是两个正整数 N 40000 为全校学生总数 K 2500 为总