【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: ...
随机推荐
- spring cloud+.net core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- tomcat8 JVM 优化
在Linux环境下设置Tomcat JVM,在/opt/tomcat/bin/catalina.sh文件中找到"# ----- Execute The Requested Command&q ...
- leetcode — divide-two-integers
/** * Source : https://oj.leetcode.com/problems/divide-two-integers/ * * Created by lverpeng on 2017 ...
- Python和Java编程题(二)
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21 ...
- Python循环文件推荐的方式,可用于读取文本最后一行或删除指定行等
读取文本最后一行: f = open('test11.txt', 'rb') for i in f: offset = -16 while True: f.seek(offset, 2) data = ...
- [SPOJ22343] Norma
Description 现在有一个长度为\(N(N\leq 500000)\)的序列,定义区间\([l,r]\)的价值为\([l,r]\)的最小值乘上\([l,r]\)的最大值乘上\([l,r]\)的 ...
- JVM(一)—— 内存管理
JVM 内存结构 Java 虚拟机的内存空间分为 5 个部分: 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 程序计数器(PC) 为什么需要程序计数器 因为Java虚拟机的多线程是通过线程轮 ...
- IdentityServer4 中文文档 -5- (简介)支持和咨询选项
IdentityServer4 中文文档 -5- (简介)支持和咨询选项 原文:http://docs.identityserver.io/en/release/intro/support.html ...
- js串口通信 调用MSCOMM32控件 链接电子秤(完整版实现方案)
硬件环境:RS232转USB串口线*1 电子秤*1(本人采用G&G E600Y-C型号称重仪) 电子秤原装RS232数据线*1 计算机*1 软件环境:RS232转USB串口线驱动(这个可以在串 ...
- Umbraco 7 支持Microsoft Word 2013 发布内容
本文介绍如何使用Microsoft Word 2013 编写或编辑你的Blogs或新闻页面,甚至不需要打开浏览器, 我将分成两部分来讲. 概述 本例实采用的是Umbraco 7.2 版本,首页效果: ...