【PAT】B1073 多选题常见计分法(20 分)
此处为我的存储结构,只提供一种思路,二维数组存储所有数据

#include<stdio.h>
#include<string.h>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
int ti[200][20]={0};
bool ffind(char *p,char c){
int len = strlen(p);
for(int i=0;i<len;i++){
if(p[i]==c) return true;
}
return false;
}
int main(){
int flag=0;//储存错的最多次数
int N,M;scanf("%d %d",&N,&M);
for(int i=1;i<=M;i++){
scanf("%d %d %d",&ti[i][0],&ti[i][1],&ti[i][2]);
for(int j=0;j<ti[i][2];j++){
char temp;scanf(" %c",&temp);
ti[i][temp-'a'+3]=1;
}
}
getchar();//接收换行
for(int i=0;i<N;i++){//N个学生,N次循环
double score=0;//当前学生成绩
for(int j=1;j<=M;j++){
int Tnum=0,ff=0;
char str[10];
scanf(" (%[^)]",str);
for(int k=3;k<=7;k++){
char temp=k-3+'a';
if(ffind(str,temp)==true){//选了
if(ti[j][k]==0){//错
ti[j][k+5]++;ff=1;
if(ti[j][k+5]>flag) flag=ti[j][k+5];
}else Tnum++;
}else{//没选
if(ti[j][k]==1){
ti[j][k+5]++;
if(ti[j][k+5]>flag) flag=ti[j][k+5];
}
}
}
if(ff==0){
if(Tnum==ti[j][2]) score+=ti[j][0];
if(Tnum<ti[j][2]){
score+=ti[j][0]/2.0;
}
}
getchar();//右括号
}
printf("%.1lf\n",score);
}
if(flag==0){
printf("Too simple");
return 0;
}
for(int i=1;i<=M;i++){
for(int j=8;j<=12;j++){
if(ti[i][j]==flag) printf("%d %d-%c\n",flag,i,j-8+'a');
}
}
return 0;
}
【PAT】B1073 多选题常见计分法(20 分)的更多相关文章
- PAT——1073. 多选题常见计分法(20)
批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到50%分数:如果考生选择了任何一个错误的选项,则不能得分.本题就 ...
- 1073 多选题常见计分法 (20分)C语言
批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到 50% 分数:如果考生选择了任何一个错误的选项,则不能得分.本 ...
- PAT 1073. 多选题常见计分法
PAT 1073. 多选题常见计分法 批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到50%分数:如果考生选择了 ...
- PAT 1073 多选题常见计分法(20)(代码+思路)
1073 多选题常见计分法(20 分) 批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到 50% 分数:如果考生 ...
- PAT 1073 多选题常见计分法 (20 分)
批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到 50% 分数:如果考生选择了任何一个错误的选项,则不能得分.本 ...
- P1073 多选题常见计分法
P1073 多选题常见计分法 转跳点:
- PAT Basic 1073. 多选题常见计分法
题目内容 多选题常见计分法(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 批改多选题是比较麻烦的事情,有 ...
- PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642
PAT (Advanced Level) Practice 1015 Reversible Primes (20 分) 凌宸1642 题目描述: A reversible prime in any n ...
- PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642
PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642 题目描述: The task is really simple: ...
随机推荐
- Git 强制回退到某个历史版本再推送到远程
1. 使用 git log 命令历史版本记录回退版本 git reset --hard f6a7c803a6931a9eca011d4e097389e0845cbe49 2. 推送到远程 git pu ...
- css实现纯文字内容元素透明背景(兼容IE6)
HTML: <div class="title-wrapper"> <span class="title"> <span clas ...
- nginx介绍 - 部署到linux中
前言: tomcat理论并发处理能力, 大概500左右吧, 即使通过一些优化, 能提升一点, 但是, 并不能达到质变, 最多涨几百. 对于非互联网项目, 确实够用了. 在企业中, 如果要达到500并发 ...
- kibana从入门到精通-Kibana配置详解
配置 Kibana Kibana server 启动时从 kibana.yml 文件中读取配置属性.Kibana 默认配置 localhost:5601 .改变主机和端口号,或者连接其他机器上的 El ...
- centos7环境开启WIFI热点
1.环境介绍 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@localhost ~]# u ...
- [51nod1514] 美妙的序列
Description 如果对于一个 \(1\sim n\) 的排列满足: 在 \(1\sim n-1\) 这些位置之后将序列断开,使得总可以从右边找一个数,使得该数不会比左边所有数都大,则称该序列是 ...
- C#部分类与部分方法
部分类也可以定义部分方法.部分方法在部分类中定义,但没有方法体,在另一个部分类中执行.在这两个部分类中,都要使用partial关键字. public partial class MyClass { p ...
- SpringMVC4+Hibernate5+SQLServer 2014 整合(包括增删改查分页)
前言 前面整合完了SpringMVC+MyBatis,自然也少不了SpringMVC+Hibernate,严格来说Hibernate才是我们真正想要的ORM框架么.只记得最初学习hibernate时, ...
- TCP/IP 详解
分层 每一层负责不同的功能: 链路层 有时也称作数据链路层或网络接口层, 通常包括操作系统中的设备驱动程序和计算机 中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节. ...
- asp.net通过后台代码给前台设置css样式,下拉列表在js中的取值
后台根据不同的用户登陆隐藏或显示前台div标签 前台: 将div声明成服务器端控件 <div id="div1" runat="server">.. ...