立志用最少的代码做最高效的表达


PAT乙级最优题解——>传送门


批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多。

输入格式:
输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学生人数和多选题的个数。随后 M 行,每行顺次给出一道题的满分值(不超过 5 的正整数)、选项个数(不少于 2 且不超过 5 的正整数)、正确选项个数(不超过选项个数的正整数)、所有正确选项。注意每题的选项从小写英文字母 a 开始顺次排列。各项间以 1 个空格分隔。最后 N 行,每行给出一个学生的答题情况,其每题答案格式为 (选中的选项个数 选项1 ……),按题目顺序给出。注意:题目保证学生的答题情况是合法的,即不存在选中的选项数超过实际选项数的情况。

输出格式:
按照输入的顺序给出每个学生的得分,每个分数占一行。注意判题时只有选择全部正确才能得到该题的分数。最后一行输出错得最多的题目的错误次数和编号(题目按照输入的顺序从 1 开始编号)。如果有并列,则按编号递增顺序输出。数字间用空格分隔,行首尾不得有多余空格。如果所有题目都没有人错,则在最后一行输出 Too simple。

输入样例:
3 4
3 4 2 a c
2 5 1 b
5 3 2 b c
1 5 4 a b d e
(2 a c) (2 b d) (2 a c) (3 a b e)
(2 a c) (1 b) (2 a b) (4 a b d e)
(2 b d) (1 e) (2 b c) (4 a b c d)

输出样例:
3
6
5
2 2 3 4


简单模拟, 代码中给了详细注释。

#include<bits/stdc++.h>
using namespace std;struct problem{int a[300] = {0};       //记录正确选项 int t_num = 0;            //正确选项个数 int sc = 0;               //本题分数 int f = 0;              //本题错误次数
}pro[110];int stu[1010] = {0};int main() {//输入题 int n, m; cin >> n >> m;for(int i = 0; i < m; i++) {int a, b, c; cin >> pro[i].sc >> b >> pro[i].t_num;for(int j = 0; j < pro[i].t_num; j++) {char x; cin >> x; pro[i].a[x]++;}}getchar();//输入学生for(int i = 0; i < n; i++) {string s; getline(cin, s);int sta = 0;for(int j = 0; j < m; j++) {          //遍历学生的选项,一共m个 int num = 0, t = 0;                 //选项个数和正确选项个数 int fin = s.find(')',sta);         //以右括号为终点for(int k = sta; k < fin; k++) { //遍历括号中的数 if(isdigit(s[k]))             //如果是数字,则为选项个数 t = s[k]-'0';if(isalpha(s[k]))                 //如果是字母 if(pro[j].a[s[k]] == 1)       //判断是否匹配 num++;                   //匹配错误 }if(num == pro[j].t_num && num == t) //如果正确选项个数相同 stu[i] += pro[j].sc;         //则该学生得到该分数 else pro[j].f++;      //错误则该题错误次数+1 sta = fin+1;       //更新sta的值 }}//输出学生的分数 for(int i = 0; i < n; i++) {cout << stu[i] << '\n'; }//求题的错误次数int Max = -1;for(int i = 0; i < m; i++) {Max = max(Max, pro[i].f);} if(Max == 0 || Max == -1 ) cout << "Too simple\n";else {cout << Max;for(int i = 0; i < m; i++) {if(pro[i].f == Max)cout << ' ' << i+1; }}return 0;
}

每日一句

你的潜意识,正在操控你的人生,而你却称其为命运。

【详细注释】1058 选择题 (20 分)相关推荐

  1. C++学习之路 | PTA乙级—— 1058 选择题 (20 分)(精简)

    1058 选择题 (20 分) 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 10 ...

  2. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

  3. 【PAT乙级】1058 选择题 (20 分)

    题目地址 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int score[N],sum[N],cnt[ ...

  4. 1058. 选择题(20)

    原题: https://www.patest.cn/contests/pat-b-practise/1058 思路: 本题主要就是怎么读取数据的问题, 一定要注意scanf函数匹配到 空格或者回车会结 ...

  5. 1058. 选择题(20)-PAT乙级真题

    批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数N(<=1000)和M(<=100),分别是学生人数和多 ...

  6. ptapython答案单选题_PTA:Python解答1058 选择题

    1058 选择题 (20分) 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100 ...

  7. 1088 三人行 (20 分)(附详细注释,逻辑分析)

    写在前面 逻辑题 丙的类型分析存在错误 输出值分析错误,输出甲的值,不是M的值 除去以上2点,题目相对简单,5分钟a题 细节问题,最耗时间 abs绝对值函数 print 函数类型错误(double型) ...

  8. 1058 A+B in Hogwarts (20 分)

    1058 A+B in Hogwarts (20 分) If you are a fan of Harry Potter, you would know the world of magic has ...

  9. (C语言最详细解析)1003 我要通过! (20 分)

    1003 我要通过! (20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件 ...

最新文章

  1. eclipse 出现 an error has occured when activating this view
  2. java 中sun.net.ftp_开发FTP不要使用sun.net.ftp.ftpClient
  3. VTK+MFC 系列教程 非常强大
  4. c++中静态成员变量和静态成员函数
  5. ordereddict有序字典
  6. python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数
  7. iPad网页开发教程及规则
  8. 算法题 20 或与加
  9. JavaWeb——关于RequestDispatcher的原理
  10. slot多作用域 vue_vue插槽
  11. 2020年30米二级分类北京市土地利用数据
  12. javascript 字符串中单引号和双引号区别
  13. 三星note10 android11,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-9825】-【V11.0 Android-R-UCD】...
  14. 人的判断力受制于他的知识和经验:明月当空叫,黄犬卧花心
  15. python画极坐标图_Python matplotlib绘制极坐标图
  16. 2022湖南最新建筑八大员(市政)考试试题题库及答案解析
  17. WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速
  18. P3386 【模板】二分图匹配
  19. 批量替换一个文件中的文件名,例如将文件夹中s**_abnormal.jpg文件修改为s**_abnor.jpg
  20. AMD芯片支持oracle数据库,ORACLE宣布支援AMD OPTERON处理器

热门文章

  1. 如何预编译 Android 模拟器专用内核
  2. C++ 类和对象(三):构造函数补充、匿名对象、友元、内部类、类的static与const
  3. 设计模式--装饰模式
  4. So Hot ?快给 CPU 降降温!
  5. 首发 | 中间件小姐姐直播“带货”——阿里程序员必知的插件
  6. RabbitMQ管理(5)——集群管理
  7. 计算机基础- -计算机为什么要使用二进制
  8. LiveVideoStack线上分享第四季(五):基于Airflow的视频编码平台
  9. 【大会】AI能解决哪些问题?
  10. 周思进:产品和服务在“骂”与“被骂”中不断打磨