中文手机网站设计案例,建文帝网站建设,wordpress网易邮箱设置,网站建设公司知识批改多选题是比较麻烦的事情#xff0c;本题就请你写个程序帮助老师批改多选题#xff0c;并且指出哪道题错的人最多。
输入格式#xff1a;
输入在第一行给出两个正整数 N#xff08;≤ 1000#xff09;和 M#xff08;≤ 100#xff09;#xff0c;分别是学生人数和…批改多选题是比较麻烦的事情本题就请你写个程序帮助老师批改多选题并且指出哪道题错的人最多。
输入格式
输入在第一行给出两个正整数 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 题解如下
20/20
这题做了快一上午人都麻了写的不够好的也就这样吧再说要忙着打工了
/*** 2024/04/09* 20/20*/
const readline require(readline);
const rl readline.createInterface({input: process.stdin,output: process.stdout,
});let num 0;
let rows [];
// 学生人数
let n 0;
// 多选题个数
let m 0;
// 多选题信息
let multipleArr [];
// 学生答题结果
let resultArr [];
// 错题数量
let errorNum;
// 学生分数
let scoreArr;
rl.on(line, function (data) {if (num 0) {n Number(data.split( )[0]);m Number(data.split( )[1]);num m;} else {if (multipleArr.length ! m) {let arr data.split( );multipleArr.push({fullMark: Number(arr[0]),optionsNum: arr[1],rightOptionsNum: Number(arr[2]),rightOptions: arr.slice(3).join( ),});} else {resultArr.push(data);if (resultArr.length n) {// 计算满分let sum multipleArr.reduce((acc, cur) acc cur.fullMark, 0);scoreArr new Array(n).fill(sum);errorNum new Array(m).fill(0);deal();}}}
});function deal() {resultArr.forEach((el, index) {// 左括号的数量也是题数-1let leftNum 0;for (let i 0; i el.length; i) {if (el[i] () {if (el[i 1] ! multipleArr[leftNum].rightOptionsNum) {// 错误数量1errorNum[leftNum];scoreArr[index] - multipleArr[leftNum].fullMark;} else {let answer el.substring(i 3, i 2 2 * el[i 1]);if (answer ! multipleArr[leftNum].rightOptions) {// 错误数量1errorNum[leftNum];scoreArr[index] - multipleArr[leftNum].fullMark;}}leftNum;// 跳转到对应的后面的空格i el[i 1] * 2 3;}}});scoreArr.forEach((el) {console.log(el);});let max 0;let maxIndex [];let maxi 0;for (let i 0; i errorNum.length; i) {if (errorNum[i] max) {max errorNum[i];}}if (max ! 0) {for (let i 0; i errorNum.length; i) {if (errorNum[i] max) {maxIndex.push(i 1);}}console.log(${max} ${maxIndex.join( )});} else {console.log(Too simple);}
}