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 害死人不偿命的( ...
随机推荐
- Python库安装注意事项
由于一些python库依赖其它库或者其它组件,因此,在使用pip3命令安装python库的时候,经常会报错,告知缺失哪些组件. 但是, 开启VPN后,就没有再碰到类似错误,相关组件都是自动被安装. 因 ...
- Angular1.x 之Providers (Value, Factory, Service and Constant )
官方文档Providers Each web application you build is composed of objects that collaborate to get stuff do ...
- 如何解决MSSQL中文数据乱码问题
今天遇到了在数据库中直接写SQL语句,语句中包含中文,但是数据库的表里是包含“?” 的乱码. 我程序代码中,调试时得到的SQL不是乱码,在控制台中也不是乱码.但是在数据库中却出现了乱码. 当用MSSQ ...
- 常用sql commands以及mysql问题解决日志
mysql workbench常用命令快捷键 ctrl+T ->创建新的sql query tab ctrl+shift+enter->执行当前的sql命令 https://dev.mys ...
- js 三元表达式的写法
句式一. if(a) do_a elseif(b) do_b else do_c 转化为: =>a ? do_a : b ?do_b : do_c 句式二. if(a) do_a 转化为: =& ...
- golang 获取变量类型的字符串格式 列举变量类型
fmt.Println(reflect.TypeOf(var)) switch xxx.(type){ case int:.... case float32:... case float64:... ...
- Python学习---Django误删除sql表后,如何创建数据
误删除sql表后,怎么创建数据? 仅仅适合单表,多表因为涉及约束, python mangage.py makemigrations --> 生成migrations目录和根数据库对应的sql ...
- C# 数据类型转换 显式转型、隐式转型、强制转型
C# 的类型转换有 显式转型 和 隐式转型 两种方式. 显式转型:有可能引发异常.精确度丢失及其他问题的转换方式.需要使用手段进行转换操作. 隐式转型:不会改变原有数据精确度.引发异常,不会发生任何问 ...
- 沉淀,再出发:jQuery的初步了解和入门
沉淀,再出发:jQuery的初步了解和入门 一.前言 对于后端开发者来说,是不是真的不需要了解前端的开发经过和相关技术,从我个人的角度来说,我觉得如果不了解或者接触很少,极有可能造成开发的时候 ...
- 设计模式之Proxy(代理)
设计模式之Proxy(代理) 板桥里人banq http://www.jdon.com 2002/04/21/ 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水, ...