PAT——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
package com.hone.basical;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
/**
* 原题目:https://www.patest.cn/contests/pat-b-practise/1058
* @author Xia
* 选择题
* java如何读取括号中的内容呢?一步步解析字符串!!之前陷入了思维僵局一直想要靠正则表达式来解决
* 对于一个对象含有多种属性的问题,都可以为该对象建立一个单独的类。
* 可惜有一个四分的测试点超时!!!
*/ public class basicalLevel1058Multiplechoice { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N= in.nextInt(); //学生人数
int M = in.nextInt(); //多选题的个数
int[] wrongText = new int[M]; //错误最多的题目
List<test> testList = new ArrayList<>();
for (int i = 0; i < M; i++) {
test t1 = new test();
t1.score = in.nextInt();
t1.optionNum = in.nextInt();
t1.rightOptionNum = in.nextInt();
String rightAns = "";
//这一步是关键,否则不好分割调出循环之后的右括号
for (int j = 0; j < t1.rightOptionNum; j++) {
rightAns+=in.next();
}
t1.rightOption = rightAns;
testList.add(t1);
} for (int i = 0; i < N; i++) {
int personScore = 0;
for (int j = 0; j < M; j++) {
String mess = in.next();
int num = mess.charAt(1)-'0';
String personAns = "";
for (int k = 0; k < num-1; k++) {
personAns+=in.next();
}
String lastChice = in.next().substring(0, 1);
personAns+=lastChice;
if (personAns.equals(testList.get(j).rightOption)) {
personScore+=testList.get(j).score;
}else {
wrongText[j]++;
}
}
System.out.println(personScore);
} int[] copy = Arrays.copyOf(wrongText, M); Arrays.sort(copy);
int max = copy[copy.length-1];
if (max == 0) {
System.out.println("Too simple");
}else {
System.out.print(max);
for (int i = 0; i < wrongText.length; i++) {
if (wrongText[i] == max) {
System.out.print(" "+(i+1));
}
}
}
}
} //给题目定一个类
class test{
int score;
int optionNum;
int rightOptionNum;
String rightOption; }
PAT——1058. 选择题的更多相关文章
- PAT 1058 选择题(20)(代码+思路)
1058 选择题(20 分) 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100 ...
- PAT 1058 选择题
https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440 批改多选题是比较麻烦的事情,本题就请你写个程 ...
- PAT 1058. 选择题(20)
批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数N(<=1000)和M(<=100),分别是学生人数和多 ...
- PAT 1058 A+B in Hogwarts
1058 A+B in Hogwarts (20 分) If you are a fan of Harry Potter, you would know the world of magic ha ...
- pat 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 i ...
- 1058 选择题 (20 分)C语言
批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学生人数和多选题的个 ...
- PAT Basic 1058
1058 选择题 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学 ...
- PAT乙级考前总结(五)
字符串处理 1003 我要通过! (20 分) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否 ...
- PAT乙级 解题目录
有些题做得可能比较傻,有好方法,或者有错误还请告诉我,多多指教=.= 思路比较好的题目我都有讲的很详细. 剩下三道题有待优化,等改好了再上传. 标题 题目链接 解题链接 1001 害死人不偿命的( ...
随机推荐
- dbUtils 中的各种 Handler 什么 意思
ArrayHandler:把结果集中的第一行数据转成对象数组. ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中. BeanHandler:将结果集中的第 ...
- LocalStorage和sessionStorage之间的区别
众所周知,自从HTML 5 标准出现之后,本地化存储一度成为热搜的关键词.在HTML 5 最开始时,本地存储有两种方式:一种是web Storage,另一种是web SQL.由于web SQL的实现是 ...
- MVC 事物同时保存,更新数据库
本人小白一枚,第一次写博,主要用作笔记,怕以后忘记了,大神尙可路过,也可多多指教 事物用在同时保存更新数据时,及只要在事物块的范围内,有一个操作出错则事物块所有更新,保存等操作都不会执行 ...
- idea 常用快捷键 笔记
1. main方法 输入psv tab或回车 类似的 psf fori (for循环) sout 备注: 通过ctrl+j 可以查询 2. 删除当前行 ctrl + y 3. 复制当前行 ctrl ...
- rocketmq Don't have SubscriptionGroup
1. 问题描述 rocketmq 生产者发消息正常 mq后台也可以看到发出的消息 但是消费者一直没消费 好像订阅没成功 2. 问题排查 通过上图查看 确实没有检测到订阅者 3. 问题解决 线上环境是 ...
- BZOJ1103 [POI2007]大都市
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了. 不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1.. ...
- webpack+vue2实现旅游网小demo
这两天自己练习做了一个webpack+vue2的旅游app小项目,涉及到的内容是vue组件.vue路由以及webpack打包. 目录文件设计: 有兴趣的可到我的百度网盘下载 链接: h ...
- chrome:插件、跨域、调试....
chrome 调试小技巧 ctrl+shift+c 打开chrome的控制台选中一个元素,然后在控制台输入$0即可获取选中的元素,就可以对其进行操作了. $0.addEventListener(... ...
- EF Migrations
Enable-Migrations -EnableAutomaticMigrations dbcontent Add-Migration XXXXX Update-Database -Verbose ...
- 关于eclipse连接外置android模拟器
1.win+R,输入cmd,打开命令提示符 2.cd D:\Java(安卓应用开发)\adt-bundle-windows-64\sdk\platform-toolsadb connect 127.0 ...