2018 江苏某单位招聘—刑侦科推理
阅读目录
- 题目
- 解析
- 程序详解
题目

解析

程序详解
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int main() 6 { 7 char c1,c2,c3,c4,c5,c6,c7,c8,c9,c10; 8 //十道题的答案 9 int na,nb,nc,nd; 10 //abcd出现的次数 11 int max_n,min_n; 12 //选项最多与最少的答案 13 char max_q,min_q; 14 int n=1<<20; 15 for(int k=0;k<n;k++)//运用位运算功能,类似于套用十层for循环的意思! 16 { 17 //十道题的答案 18 c1='A'+(k&3); 19 c2='A'+((k>>2)&3); 20 c3='A'+((k>>4)&3); 21 c4='A'+((k>>6)&3); 22 c5='A'+((k>>8)&3); 23 c6='A'+((k>>10)&3); 24 c7='A'+((k>>12)&3); 25 c8='A'+((k>>14)&3); 26 c9='A'+((k>>16)&3); 27 c10='A'+((k>>18)&3); 28 //ABCD出现的次数 29 na=nb=nc=nd=0; 30 for(int i=0;i<10;i++) 31 { 32 int w=(k>>(2*i))&3; 33 if(w==0)++na; 34 else if(w==1)++nb; 35 else if(w==2)++nc; 36 else{++nd;} 37 } 38 39 //选项最多的答案和次数 40 max_n=na;max_q='A'; 41 if(max_n<nb){max_q='B';max_n=nb;} 42 if(max_n<nc){max_q='C';max_n=nc;} 43 if(max_n<nd){max_q='D';max_n=nd;} 44 45 //选项最小的答案和次数 46 min_n=na;min_q='A'; 47 if(min_n>nb){min_q='B';min_n=nb;} 48 if(min_n>nc){min_q='C';min_n=nc;} 49 if(min_n>nd){min_q='D';min_n=nd;} 50 51 //第二题的处理 52 if(c2=='A'&&c5!='C')continue; 53 if(c2=='B'&&c5!='D')continue; 54 if(c2=='C'&&c5!='A')continue; 55 if(c2=='D'&&c5!='B')continue; 56 //第三题的处理 57 if(c3=='A'&&(c3==c6||c3==c2||c3==c4))continue; 58 if(c3=='B'&&(c3==c6||c6==c2||c6==c4))continue; 59 if(c3=='C'&&(c3==c2||c6==c2||c2==c4))continue; 60 if(c3=='D'&&(c3==c4||c4==c2||c6==c4))continue; 61 //第四题处理 62 if(c4=='A'&&c1!=c5)continue; 63 if(c4=='B'&&c2!=c7)continue; 64 if(c4=='C'&&c1!=c9)continue; 65 if(c4=='D'&&c6!=c10)continue; 66 //第五题处理 67 if(c5=='A'&&c5!=c8)continue; 68 if(c5=='B'&&c5!=c4)continue; 69 if(c5=='C'&&c5!=c9)continue; 70 if(c5=='D'&&c5!=c7)continue; 71 //第六题处理 72 if(c6=='A'&&(c8!=c2||c8!=c4))continue; 73 if(c6=='B'&&(c8!=c1||c8!=c6))continue; 74 if(c6=='C'&&(c8!=c3||c8!=c10))continue; 75 if(c6=='D'&&(c8!=c5||c8!=c9))continue; 76 //第七题处理 77 if(c7=='A'&&min_q!='C')continue; 78 if(c7=='B'&&min_q!='B')continue; 79 if(c7=='C'&&min_q!='A')continue; 80 if(c7=='D'&&min_q!='D')continue; 81 //第八题处理 82 if(c8=='A'&&abs(c1-c7)==1)continue; 83 if(c8=='B'&&abs(c1-c5)==1)continue; 84 if(c8=='C'&&abs(c1-c2)==1)continue; 85 if(c8=='D'&&abs(c1-c10)==1)continue; 86 //第九题处理 87 if(c1==c6) 88 { 89 if(c9=='A'&&c5==c6)continue; 90 if(c9=='B'&&c5==c10)continue; 91 if(c9=='C'&&c5==c2)continue; 92 if(c9=='D'&&c5==c9)continue; 93 } 94 else 95 { 96 if(c9=='A'&&c5!=c6)continue; 97 if(c9=='B'&&c5!=c10)continue; 98 if(c9=='C'&&c5!=c2)continue; 99 if(c9=='D'&&c5!=c9)continue; 100 } 101 //第十题处理 102 if(c10=='A'&&max_n-min_n!=3)continue; 103 if(c10=='B'&&max_n-min_n!=2)continue; 104 if(c10=='C'&&max_n-min_n!=4)continue; 105 if(c10=='D'&&max_n-min_n!=1)continue; 106 107 cout<<"1."<<c1<<" 2."<<c2<<" 3."<<c3<<" 4."<<c4<<" 5."<<c5<<" 6."<<c6<<" 7."<<c7<<" 8."<<c8<<" 9."<<c9<<" 10."<<c10; 108 } 109 110 return 0; 111 }

浙公网安备 33010602011771号