明明同學最近迷上了偵探漫畫《柯南》並沉醉於推理遊戲之中,於是他召集了一群同學玩推理遊戲。遊戲的內容是這樣的,明明的同學們先商量好由其中的乙個人充當罪犯(在明明不知情的情況下),明明的任務就是找出這個罪犯。接著,明明逐個詢問每乙個同學,被詢問者可能會說:
證詞中出現的其他話,都不列入邏輯推理的內容。
明明所知道的是,他的同學中有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 ...