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 }
View Code

 

posted @ 2020-02-01 02:04  mlm5678  阅读(138)  评论(0)    收藏  举报