hello
各位小伙伴
最近過的怎么樣
有沒有按時吃飯,睡覺,敲代碼
一定要照顧好自己呀~
不知道大家前段時間,有沒有在朋友圈中收到一份,『2018的刑偵科目推理試題』娜娜偶然在朋友圈中看到過一次~
原圖奉上,沒有看過的小伙伴可以仔細的看一下哈~
我看到第一題的反應是
題呢?你到給我題呀~連題都不給我~我怎么知道答案~
看到第二題我的腦袋已經無法思考一片空白了~
這尼瑪是什么玩意兒,簡直就是一個坑啊,然后我就放棄了。
但是最近我看到各路大神對這道題進行了解答,我才意識到,原來看似這么不正經的題其實是有很正經的答案的~
娜娜~不禁想問,這的死多少腦細胞才能做出這樣的推理題~看來我那900+多集的柯南是白看了~
python語言實現
運行結果:
c++語言實現
C語言實現:
一上來就是兩發,下面代碼是精簡后的代碼。
Java語言實現
for(inti =0; i <10; i++){
System.out.println((i+1) +":"+ questions[i]);
}
}
}
}
}
}
}
}
}
}
}
}
}
/**
* 判斷每個答案是否符合題意
* 為了方便 questions 數組中從 0 開始,
* 題目比數組角標多 1(不要問為什么, 奏是這么開)
* 比如 question[0] 的值表示第 1 題答案
**/
staticbooleanisEnd(int[] questions){
// 第二題, 第 5 題的答案是
switch(questions[4]){
case1:
// 如果第 5 題答案是 A, 判斷第 2 題答案是不是 C 不是返回 false, 是繼續
if(questions[1] !=3)
returnfalse;
break;
case2:
// 原理同上
if(questions[1] !=4)
returnfalse;
break;
case3:
// 原理同上
if(questions[1] !=1)
returnfalse;
break;
case4:
// 原理同上
if(questions[1] !=2)
returnfalse;
break;
}
// 第 3 題, 以下選項中哪一題的答案與其他三項不同
switch(questions[2]){
case1:
if(!(questions[2]!=questions[5] && questions[5]==questions[1] && questions[1] ==
questions[3]))
returnfalse;
break;
case2:
if(!(questions[5]!=questions[2] && questions[2]==questions[1] && questions[1] ==
questions[3]))
returnfalse;
break;
case3:
if(!(questions[1]!=questions[5] && questions[2]==questions[5] && questions[5] ==
questions[3]))
returnfalse;
break;
case4:
if(!(questions[3]!=questions[5] && questions[5]==questions[1] && questions[1] ==
questions[2]))
returnfalse;
break;
}
// 第 4 題, 以下選項中那兩題的答案相同
switch(questions[3]){
case1:{
// 判斷第 1 題與第 5 題答案是否相同
if(questions[0] != questions[4]){
returnfalse;
}
break;
}
case2:{
// 原理同上
if(questions[1] != questions[6]){
returnfalse;
}
break;
}
case3:{
// 原理同上
if(questions[0] != questions[8]){
returnfalse;
}
break;
}
case4:{
// 原理同上
if(questions[5] != questions[9]){
returnfalse;
}
break;
}
}
// 第 5 題, 以下選項中哪一題的答案與本題相同
switch(questions[4]){
case1:
// 判斷第 8 題答案是否是 A
if(questions[7] !=1)
returnfalse;
break;
case2:
// 原理同上
if(questions[3] !=2)
returnfalse;
break;
case3:
// 原理同上
if(questions[8] !=3)
returnfalse;
case4:
// 原理同上
if(questions[6] !=4)
returnfalse;
break;
}
// 第 6 題, 以下選項中哪兩題的答案與第 8 題相同
switch(questions[5]){
case1:
// 判斷第 14 題答案是否與第 8 題答案相同
if(questions[1] != questions[7] || questions[4] != questions[7])
returnfalse;
break;
case2:
// 原理同上
if(questions[0] != questions[7] || questions[5] != questions[7])
returnfalse;
break;
case3:
// 原理同上
if(questions[2] != questions[7] || questions[9] != questions[7])
returnfalse;
break;
case4:
// 原理同上
if(questions[4] != questions[7] || questions[8] != questions[7])
returnfalse;
break;
}
// 由于第 710 題問題是同類型的, 所以一塊計算 start
int[] check10 =newint[5];
// 把每個題的答案 (1234) 作為新數組下表, value++ 計算出現次數
for(inti=0;i < questions.length;i++){
check10[questions[i]]++;
}
// 出現最少與最多選項的次數初始化為 A 的次數
intlow = check10[1];
intlonger = check10[1];
// 出現最少的選項, 初始化為 A
intlowA =1;
// 最少與最多次數的選項相關計算
for(inti=1;i<5;i++) {
if(check10[i] >0&& check10[i] < low){
low = check10[i];
lowA = i;
}
if(check10[i] > longer){
longer = check10[i];
}
}
// 第 7 題, 在此十道題中, 被選中次數最少的選項字母為
switch(questions[6]){
case1:
// 判斷才出現最少的字母是否為 C
if(lowA !=3)
returnfalse;
break;
case2:
// 原理同上
if(lowA !=2)
returnfalse;
break;
case3:
// 原理同上
if(lowA !=1)
returnfalse;
break;
case4:
// 原理同上
if(lowA !=4)
returnfalse;
break;
}
// 第 10 題, 在此 10 道題中, ABCD 四個字母出現次數最多與最少者的差為
// 最多次數與最少次數的差值
intt = longer-low;
switch(questions[9]){
case1:
// 判斷差值是否為 3
if(t !=3)
returnfalse;
break;
case2:
// 原理同上
if(t !=2)
returnfalse;
break;
case3:
// 原理同上
if(t !=4)
returnfalse;
break;
case4:
// 原理同上
if(t !=1)
returnfalse;
break;
}
// 第 710 題校驗 end
// 第 8 題, 以下選項中哪一題的答案與第 1 題的答案在字母中不相鄰
switch(questions[7]) {
case1:
// 判斷第 7 題與第一題答案差值絕對是是否為 1
if(Math.abs(questions[6] - questions[0]) ==1)
returnfalse;
break;
case2:
// 原理同上
if(Math.abs(questions[4] - questions[0]) ==1)
returnfalse;
break;
case3:
// 原理同上
if(Math.abs(questions[1] - questions[0]) ==1)
returnfalse;
break;
case4:
// 原理同上
if(Math.abs(questions[9] - questions[0]) ==1)
returnfalse;
break;
}
// 第 9 題, 已知第 1 題與第 6 題的答案相同與第 X 題與第 5 題的答案相同的真假性相反, 那么 X 為
// 判斷第 1 題與第 6 題的答案是否相同
boolean isOne = questions[0]==questions[5]?true:false;
switch(questions[8]){
case1:
if(isOne){
// 第 1 題與第 6 題相同, 第 6 題與第 5 題答案相同返回 false;
if(questions[5] == questions[4])
returnfalse;
}else{
// 第 1 題與第 6 題不相同, 第 6 題與第 5 題答案不相同返回 false;
if(questions[5] != questions[4])
returnfalse;
}
break;
case2:
// 原理同上
if(isOne){
if(questions[9] == questions[4])
returnfalse;
}else{
if(questions[9] != questions[4])
returnfalse;
}
break;
case3:
// 原理同上
if(isOne){
if(questions[1] == questions[4])
returnfalse;
}else{
if(questions[1] != questions[4])
returnfalse;
}
break;
case4:
// 原理同上
if(isOne){
if(questions[8] == questions[4])
returnfalse;
}else{
if(questions[8] != questions[4])
returnfalse;
}
break;
}
returntrue;
}
publicstaticvoidmain(String[] args){
answer();
}
看到上面的答案之后,娜娜躲在角落了瑟瑟發抖,大牛,不就是膝蓋嗎?我給還不行嗎?
然后我看到了下面這條信息,這一是道杭州學軍中學的推理社的招新題~招新題~
然后娜娜開始研究怎么把這道題解出來~
此時此刻娜娜
娜娜的心情就和外面的天氣一樣
當我以為這題沒有答案的時候
有人做出了答案
當我以為做答案的都是大牛的時候
有人說這是入門級的題
當我想著別人能做我也能做到的時候
發現自己竟然做不出來
各位小伙伴
開往幼兒園的班車就要發車了
沒做出來的小伙伴請上車
和娜娜一起回去學習
不要擔心
我一定會回來的~~~
學習Java的同學注意了!!!學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群:253772578,我們一起學Java!