2-6 打印学生选课清单(15 分)

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

输入格式:

输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生名单,相邻两个学生名字用1个空格分隔。学生姓名由3个大写英文字母+1位数字组成。选课信息之后,在一行内给出了N个前来查询课表的学生的名字,相邻两个学生名字用1个空格分隔。

输出格式:

对每位前来查询课表的学生,首先输出其名字,随后在同一行中输出一个正整数C,代表该生所选的课程门数,随后按递增顺序输出C个课程的编号。相邻数据用1个空格分隔,注意行末不能输出多余空格。

输入样例:

10 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
ZOE1 ANN0 BOB5 JOE4 JAY9 FRA8 DON2 AMY7 KAT3 LOR6

输出样例:

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

LOR6 4 1 2 4 5

/*这道题主要是要理解题目考察的是数据结构中的那一个知识点知识点就是哈希表(散列表)只要你知道这个point后,就可以解决问题了设置一个足够大的结构体指针数组,完美避免关于哈希表的冲突问题*//*利用哈希表构建链表后,能完美的节省运行时间而且链表的在内存上优化的较好,可以避免你设置大型的结构体数组所浪费的内存*/
#include <stdio.h>
#include<malloc.h>typedef struct node {int Course;struct node *Next;
}Node;Node *Insert(Node *sort, int K);
void Print(Node *head,int N);int main(int argc, char **argv)
{Node *list[26][26][26][10];//最后一位放空,避免越界int N, K;int i, j;int snapCourse, stus;char snapName[5];for (int i = 0; i<26; i++)for (int j = 0; j<26; j++)for (int u = 0; u<26; u++)for (int k = 0; k<10; k++)list[i][j][u][k] = NULL;scanf("%d %d", &K, &N);for (i = 0; i < N; i++){scanf("%d %d", &snapCourse, &stus);for (j = 0; j < stus; j++){getchar();scanf("%s", snapName);list[snapName[0] - 'A'][snapName[1] - 'A'][snapName[2] - 'A'][snapName[3] - '0'] =Insert(list[snapName[0] - 'A'][snapName[1] - 'A'][snapName[2] - 'A'][snapName[3] - '0'], snapCourse);}}for (i = 0; i < K; i++){scanf("%s", snapName);printf("%s", snapName);Print(list[snapName[0] - 'A'][snapName[1] - 'A'][snapName[2] - 'A'][snapName[3] - '0'], 0);putchar('\n');}return 0;
}
Node *Insert(Node *sort, int K)
{if (!sort || sort->Course < K){Node *temp = (Node*)malloc(sizeof(Node));temp->Course = K;temp->Next = sort;return temp;}else if (sort->Course != K)sort->Next = Insert(sort->Next, K);return sort;
}
void Print(Node *head, int N)
{if (head){Print(head->Next, ++N );printf(" %d", head->Course);}else printf(" %d", N);
}

PTA2-6 打印学生选课清单(15 分)相关推荐

  1. 7-3 打印学生选课清单 (25分)

    7-3 打印学生选课清单 (25分) 假设全校有最多40000名学生和最多2500门课程.现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单.输入格式: 输入的第一行是两个正整数:N(≤ ...

  2. 7-2 打印学生选课清单 (25分)(c++)

    7-2 打印学生选课清单 (25分) 假设全校有最多40000名学生和最多2500门课程.现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单. 输入格式: 输入的第一行是两个正整数:N( ...

  3. 7-49 打印学生选课清单 (25 分)(思路+详解+map做法(一对多)+超时解决)Come baby!

    一:题目 假设全校有最多40000名学生和最多2500门课程.现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单. 输入格式: 输入的第一行是两个正整数:N(≤40000),为前来查询课 ...

  4. 7-20 打印九九口诀表 (15 分)

    7-20 打印九九口诀表 (15 分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 ...

  5. 5-20 打印九九口诀表 (15分)

    5-20 打印九九口诀表   (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 ...

  6. 7-20 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4

    7-20 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1 ...

  7. 统计学生成绩 (15 分)

    统计学生成绩 (15 分) 本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布.百分制成绩到五分制成绩的转换规则: 大于等于90分为A: 小于90且大于等于80为B: 小于80且大于等于7 ...

  8. 7-12 打印九九口诀表 (15分)

    7-12 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1 ...

  9. 第4章-24 打印九九口诀表 (15分)

    第4章-24 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 ...

  10. 7-20 打印九九口诀表 (15分)

    7-20 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1 ...

最新文章

  1. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot)
  2. R语言as.name函数(转化为命名的类别对象)和is.name函数(检验是否是命名的类别对象)实战
  3. 淘宝网商品库优化实践访谈
  4. Dynamic Performance Tables not accessible 问题解决
  5. cannot access xxx的解决办法
  6. Display Substring
  7. asp.net 生命周期中的时间流程
  8. Django 【第十九篇】JS实现的ajax、同源策略和前端JSONP解决跨域问题
  9. thinkphp视图中插入php代码
  10. ExtJS4.2学习(七)EditorGrid可编辑表格(转)
  11. NYOJ题目1170-最大的数
  12. 系统分析师视频教程-张友生
  13. 本人新书-Redis开发与运维-目录
  14. 海康RTSP客户端连接深入分析
  15. 把ipa包上传入AppStore
  16. 70年,国人的奋斗史,计算机技术的追赶史
  17. python换脸教程_教你如何用200行Python代码“换脸”教程
  18. 网络安全--使用Kali进行ARP欺骗(详细教程)
  19. 直播预告 | ICLR专场二
  20. 3D打印的塑料汽车最高时速为50英里

热门文章

  1. 银联支付,实现代码对接
  2. 插桩java_字节码插桩技术
  3. houdini pyro
  4. cada0图纸框_CAD怎么画图纸框?cad图纸框的绘制方法
  5. 上课学计算机的周记,计算机实习周记20篇
  6. MagicDraw-序列图
  7. Mars《Android开发视频教程》
  8. 学习WEB的心理路程
  9. 网络爬虫相关软件以及论文检索与推荐网站调研
  10. 嵌入式入门必去的网站 —— 介绍的非常详细