PAT Basic 1058
1058 选择题
批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多。
输入格式:
输入在第一行给出两个正整数 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
  题解:这道题麻烦就麻烦在输入处理上,我们可以有很多种方式来处理这个括号,如scanf("(%d"),getchar()吸收等,详见代码。
代码如下:
 #include<iostream>
 using namespace std;
 struct ti{
     int score, num, ok_num;
     char ans[];
 };
 ti a[];
 int b[] = {};
 int main()
 {
     int n, m, sum, no, ok, max = ;
     char answer;
     scanf("%d %d",&n,&m);
     for( int i = ; i < m; i++){
         scanf("%d %d %d",&a[i].score,&a[i].num,&a[i].ok_num);
         for( int j = ; j < a[i].ok_num; j++){
             scanf(" %c",&a[i].ans[j]);
         }
     }
     getchar();
     for( int i = ; i < n; i++){
         sum = ;
         for( int j = ; j < m; j++){
             scanf("(%d",&no);
             ok = ;
             for( int z = ; z < no; z++){
                 scanf(" %c",&answer);
                 if( answer == a[j].ans[z]) continue;
                 else{
                     ok = ;
                 }
             }
             getchar();
             getchar();
             if(ok) sum += a[j].score;
             else{
                 b[j]++;
                 if(b[j] > max)
                     max = b[j];
             }
         }
         printf("%d\n",sum);
     }
     if(max == ){
         printf("Too simple");
     }
     else{
         int ac = ;
         printf("%d",max);
         for( int i = ;i < m; i++){
             if( b[i] == max){
                 printf(" %d",i+);
             }
         }
     }
     return ;
 }
PAT Basic 1058的更多相关文章
- PAT Basic 1057
		1057 数零壹 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有 ... 
- PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)
		PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ... 
- PAT (Basic Level) Practise (中文)-  1022. D进制的A+B (20)
		PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20) http://www.patest.cn/contests/pat-b-practise/1 ... 
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
		PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ... 
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
		PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ... 
- PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)
		PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15) http://www.patest.cn/contests/pat-b-practise/10 ... 
- PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)
		PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20) http://www.patest.cn/contests/pat-b-practise/1027 本题 ... 
- PAT (Basic Level) Practise (中文)-1028. 人口普查(20)
		PAT (Basic Level) Practise (中文)-1028. 人口普查(20) http://www.patest.cn/contests/pat-b-practise/1028 某 ... 
- PAT (Basic Level) Practise (中文)-1029. 旧键盘(20)
		PAT (Basic Level) Practise (中文)-1029. 旧键盘(20) http://www.patest.cn/contests/pat-b-practise/1029 旧键盘上 ... 
随机推荐
- C++中this指针的理解
			C++中this指针的理解 先要理解class的意思.class应该理解为一种类型,象int,char一样,是用户自定义的类型.用这个类型可以来声明一个变量,比如int x, myclass my等等 ... 
- python中的os.path.dirname与os.path.dirname(__file__)的用法
			python中的os.path.dirname的用法 os.path.dirname(path) 语法:os.path.dirname(path) 功能:去掉文件名,返回目录 如: print(os. ... 
- python入门之实例-用户登录、注册
			用户密码存储文件db(其中用户和密码之间用$符合隔开): admin$123456 root$sdfk9f24 chy$654321 代码如下: def login(username,password ... 
- Flask 学习系列(二)---Jinjia2模板
			下面是一个jinjia2的简单模板的例子: <!DOCTYPE html> <html lang="en"> <head> <meta c ... 
- node.js之Windows 系统下设置Nodejs NPM全局路径
			node.js 0.10 版本下修改全局路径: npm config set cache "D:\nodejs\node_cache" npm config set prefix ... 
- 解析C++普通局部变量与指针类型的对象变量的应用区别
			首先我们先来了解一下MFC中的CPtrArray类,他可以说是CObject类型指针对象的集合.通过intAdd( CObject* newElement );注意参数是一个指针类型)可以向集合中添加 ... 
- Objective-C Log Handling
			NSLog method In order to print logs, we use the NSLog method in Objective-C programming language whi ... 
- listView onItemClick失效
			1.先检查list是否设置监听onItemClick事件 2.ListView中有按钮时,会使子项的onItemClick事件无效,如果onItemClick不能触发,在ListView子项目布局文件 ... 
- JBOSS连接池默认连接数是多少?在哪个配置文件有这个默认的连接数?
			如果你用的是是4.x的Jboss的话,请参考:docs/dtd/jboss-ds_1_0.dtd,相信你很容易就能找到控制最大/最小连接数的选项,应该是诸如:max-pool-size/min-poo ... 
- 剑指offer——把字符串转换成整数(c++)
			题目描述请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 示例 1:输入: " -42"输出: -42解释: 第一个非空 ... 
