今日份的训练题解,今天写出来的题没有昨天多,可能是因为有些事吧。。。
这个题就是老师改卷子,忘带标准答案了,但是他改了一部分卷子,并且确定自己改的卷子没出错,他想从改过的卷子里把标准答案推出来。
因为是选择题,答案就是A,B,C,D里的一个,如果A,B,C,都不对,那就是D对。如果不确定就是?,就是这样的题目。
一开始写的忘记判断如果三个选项都不对,那么剩下的就是答案这个了。。。
代码写的很丑,想不到简单的写法。。。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=+;
struct node{
char ans;
char pd;
char t[];
}s[N];
char da[N];
int main(){
int t,n,m;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
memset(da,'?',sizeof(da));
for(int i=;i<n;i++){
for(int j=;j<;j++){
if(j==)s[i].t[j]='A';
if(j==)s[i].t[j]='B';
if(j==)s[i].t[j]='C';
if(j==)s[i].t[j]='D';
}
}
while(m--){
for(int i=;i<n;i++){
cin>>s[i].ans>>s[i].pd;
if(s[i].pd=='T'&&da[i]=='?')da[i]=s[i].ans;
if(s[i].pd=='F'&&s[i].ans=='A')s[i].t[]='';
if(s[i].pd=='F'&&s[i].ans=='B')s[i].t[]='';
if(s[i].pd=='F'&&s[i].ans=='C')s[i].t[]='';
if(s[i].pd=='F'&&s[i].ans=='D')s[i].t[]='';
}
}
for(int i=;i<n;i++){
int ret=;char qwe='';
for(int j=;j<;j++){
if(s[i].t[j]=='')ret++;
if(s[i].t[j]!='')qwe=s[i].t[j];
}
if(ret==&&da[i]=='?')da[i]=qwe;
}
for(int i=;i<n-;i++)
printf("%c ",da[i]);
printf("%c\n",da[n-]);
}
return ;
}