看程序员是如何做 “2018年刑侦科推理试题” 的

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!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容