偵探推理(題解)

2021-09-07 04:58:19 字數 1374 閱讀 8543

明明同學最近迷上了偵探漫畫《柯南》並沉醉於推理遊戲之中,於是他召集了一群同學玩推理遊戲。遊戲的內容是這樣的,明明的同學們先商量好由其中的乙個人充當罪犯(在明明不知情的情況下),明明的任務就是找出這個罪犯。接著,明明逐個詢問每乙個同學,被詢問者可能會說:

證詞中出現的其他話,都不列入邏輯推理的內容。

明明所知道的是,他的同學中有nn個人始終說假話,其餘的人始終說真。

現在,明明需要你幫助他從他同學的話中推斷出誰是真正的**,請記住,**只有乙個!

輸入由若干行組成,第一行有三個整數,m(1≤m≤20)m(1≤m≤20)、n(1≤n≤m)n(1≤n≤m)和p(1≤p≤100)p(1≤p≤100);mm是參加遊戲的明明的同學數,nn是其中始終說謊的人數,pp是證言的總數。

接下來mm行,每行是明明的乙個同學的名字(英文本母組成,沒有空格,全部大寫)。

往後有pp行,每行開始是某個同學的名宇,緊跟著乙個冒號和乙個空格,後面是一句證詞,符合前表中所列格式。證詞每行不會超過250250個字元。

輸入中不會出現連續的兩個空格,而且每行開頭和結尾也沒有空格。

如果你的程式能確定誰是罪犯,則輸出他的名字;如果程式判斷出不止乙個人可能是罪犯,則輸出 「cannot determine」;如果程式判斷出沒有人可能成為罪犯,則輸出 「impossible」。

#include

#include

#include

using

namespace std;

int n,m,p,fake[21]

,err,w[

200]

,nx;

string name[

100]

,say[

200]

,day[10]

=;inline

void

set(

int who,

int yx)

intmain()

for(

int td=

1;td<=

7;td++

)for

(int px=

1;px<=m;px++)}

int cnt=

0,ppp=0;

for(

int i=

1;i<=m;i++)if

(!err&&cnt<=n&&cnt+ppp>=n)

if(nx&&nx!=px)

else nx=px;}if

(!nx)cout<<

"impossible"

;else cout<

;}

洛谷P1039偵探推理題解

include include include includeusing namespace std string s 1005 int fake 1005 string name 1005 string day 10 int say 1005 int err int pd int who,int ...

邏輯推理題 偵探

題一 一天,湯姆叔叔和他妹妹尼撒一起在街上散步,突然湯姆叔叔想起來 對了,小外甥在前面那家店打工,我去看看他,順便買點東西。噢,我可沒有外甥。說完,尼撒就先回家了。請問 尼撒和那位神秘的外甥到底是什麼關係呢?題二 一位法官判處乙個人為死罪,這個人聽到訊息後非常恐懼。法官下令 從明天開始,到第七天傍晚...

趣味推理題

一 5位運動員參加了10公尺臺跳水比賽,有人讓他們 比賽結果 a選手說 b第二,我第三 b選手說 我第二,e第四 c選手說 我第一,d第二 d選手說 c最後,我第三 e選手說 我第四,a第一 比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。include includeint main ...