2020年第十八届西电程序设计竞赛网络预选赛之Problem A 失败的在线考试

题目描述
某中学举行了一场在线考试,出题人准备了甲、乙两份题目。每份题目有 n
道单项选择题,每道题目有 4 个选项 A、B、C、D。由于工作人员的失误,一
些同学拿到了甲题目,另一些同学拿到了乙题目,但他们的答案都被提交到了
同一数据库中。目前已经无法确认每位同学拿到了哪一份题目,于是只能用甲、
乙两份题目的标准答案分别比对同学们提交的答案。若一位同学的答案与甲题
目的标准答案有 x 道题相同,与乙题目的标准答案有 y 道题相同,就认为他做
对了 max(x, y) 道题。
请你帮助阅卷老师,确定每位同学做对的题数。
输入
输入包含多组数据,请处理到 EOF。
每组数据,第一行包含一个正整数 n ,表示同学的个数。第二行包含一个
字符串 u,其中第 i 个字符表示甲题目中第 i 题的标准答案。第三行包含一个字
符串 v,其中第 i 个字符表示乙题目中第 i 题的标准答案。之后 n 行,第 i 行包
含一个字符串 s,其中第 j 个字符表示第 i 个同学提交的第 j 题的答案。
保证一组数据中输入的所有字符串长度相同。保证整个输入文件中所有字
符串的总长度不超过 106。保证所有字符串非空,且只包含大写英文字母 “A”、
“B”、“C”、“D”。
输出
对于每组数据输出 n 行,第 i 行包含第 i 个同学做对的题数。
样例
样例输入 样例输出
5
BACCA
ABABC
BACCA
ABABC
BACCB
AAABC
CCCCC
55442
May 10, 2020
思路:这算是这一场的签到题了,不要用string,会超时,用char数组就好。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int maxx=1e6+100;
char s1[maxx],s2[maxx],s[maxx];
int n;

int main()
{
	int t;
	while(~scanf("%d",&t))
	{
		scanf("%s%s",s1,s2);
		while(t--)
		{
			scanf("%s",s);
			int num=0,_max=0;
			int len=strlen(s);
			for(int i=0;i<len;i++) if(s[i]==s1[i]) num++;
			_max=num;num=0;
			for(int i=0;i<len;i++) if(s[i]==s2[i]) num++;
			_max=max(_max,num);
			printf("%d\n",_max);
		}
	}
	return 0;
}

努力加油a啊,(o)/~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starlet_kiss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值