今日份的训练题解,今天写出来的题没有昨天多,可能是因为有些事吧。。。
这个题就是老师改卷子,忘带标准答案了,但是他改了一部分卷子,并且确定自己改的卷子没出错,他想从改过的卷子里把标准答案推出来。
因为是选择题,答案就是A,B,C,D里的一个,如果A,B,C,都不对,那就是D对。如果不确定就是?,就是这样的题目。
一开始写的忘记判断如果三个选项都不对,那么剩下的就是答案这个了。。。
代码写的很丑,想不到简单的写法。。。
代码:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 const int N=200+10; 7 struct node{ 8 char ans; 9 char pd; 10 char t[5]; 11 }s[N]; 12 char da[N]; 13 int main(){ 14 int t,n,m; 15 scanf("%d",&t); 16 while(t--){ 17 scanf("%d%d",&n,&m); 18 memset(da,'?',sizeof(da)); 19 for(int i=0;i<n;i++){ 20 for(int j=0;j<4;j++){ 21 if(j==0)s[i].t[j]='A'; 22 if(j==1)s[i].t[j]='B'; 23 if(j==2)s[i].t[j]='C'; 24 if(j==3)s[i].t[j]='D'; 25 } 26 } 27 while(m--){ 28 for(int i=0;i<n;i++){ 29 cin>>s[i].ans>>s[i].pd; 30 if(s[i].pd=='T'&&da[i]=='?')da[i]=s[i].ans; 31 if(s[i].pd=='F'&&s[i].ans=='A')s[i].t[0]='0'; 32 if(s[i].pd=='F'&&s[i].ans=='B')s[i].t[1]='0'; 33 if(s[i].pd=='F'&&s[i].ans=='C')s[i].t[2]='0'; 34 if(s[i].pd=='F'&&s[i].ans=='D')s[i].t[3]='0'; 35 } 36 } 37 for(int i=0;i<n;i++){ 38 int ret=0;char qwe='0'; 39 for(int j=0;j<4;j++){ 40 if(s[i].t[j]=='0')ret++; 41 if(s[i].t[j]!='0')qwe=s[i].t[j]; 42 } 43 if(ret==3&&da[i]=='?')da[i]=qwe; 44 } 45 for(int i=0;i<n-1;i++) 46 printf("%c ",da[i]); 47 printf("%c ",da[n-1]); 48 } 49 return 0; 50 }