PAT 1073 多选题常见计分法(测试点3,4分析)

2024-04-02 06:38

本文主要是介绍PAT 1073 多选题常见计分法(测试点3,4分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:请点击
分析:与1058相似
1 错误选项应包含以下2种情形:其一,是选错的;其二,是正确选项但是未选的
2 哪些题算是“错的多的题目” 这里是在所有选项中找出最多错误选项。而不是先找最多错误的题目,再找该题目中寻找最大错误选项
这也是测点3与4错误原因。(第一次测点3与4未过,参考1)

AC代码

#include<iostream>
using namespace std;
struct Que{int score;//每道题的分值int optNum;//选项个数int rigOptNum;//正确选项个数int rigOpts[5]={0};//(0错误1正确)下标分别对应a、b... int errNum=0;//错误数量int errOpts[5]={0};//错误选项数量 下标对应a... 
};
int main(){int N,M,maxErr=0;//maxErr是最大选项错误数量 cin>>N>>M;Que que[M];//que输入题目信息for(int i=0;i<M;i++){cin>>que[i].score>>que[i].optNum>>que[i].rigOptNum;for(int j=0;j<que[i].rigOptNum;j++){char opt; cin>>opt;que[i].rigOpts[opt-'a']=1; }} for(int i=0;i<N;i++){scanf("\n");float stuScore=0;//第i个学生分数 for(int j=0;j<M;j++){int num,flag=1;//分别为第i个学生第j题的选项数与此题是否正确 scanf("(%d",&num);int opts[5]={0};//记录漏选的选项 for(int k=0;k<num;k++){char opt;scanf(" %c",&opt); opts[opt-'a']=1; if(que[j].rigOpts[opt-'a']==0){//错选que[j].errOpts[opt-'a']+=1;//第j题第(a..)选项错误数量++ flag=0; } } scanf(")");if(j!=M-1) scanf(" ");//吸收空格 注意最后一个选项后无空格 for(int k=0;k<5;k++){//记录是正确选项但却未选的 if(que[j].rigOpts[k]==1&&opts[k]==0) que[j].errOpts[k]++;if(i==N-1&&maxErr<que[j].errOpts[k]) maxErr=que[j].errOpts[k];} if(flag){if(num==que[j].rigOptNum) stuScore+=que[j].score;//全对 else stuScore+=que[j].score*1.0/2;//半对} else que[j].errNum++;//第j题错误数量++ }printf("%.1f\n",stuScore); } if(maxErr==0){cout<<"Too simple"<<endl;return 0;}for(int i=0;i<M;i++){for(int j=0;j<5;j++){if(que[i].errOpts[j]==maxErr) cout<<maxErr<<" "<<i+1<<"-"<<(char)(j+'a')<<endl;}}return 0;
}

这篇关于PAT 1073 多选题常见计分法(测试点3,4分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869242

相关文章

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维