AcWing 478 偵探推理 列舉 模擬

2021-10-20 00:19:29 字數 2489 閱讀 7291

acwing 478. 偵探推理

明明同學最近迷上了偵探漫畫《柯南》並沉醉於推理遊戲之中,於是他召集了一群同學玩推理遊戲。

遊戲的內容是這樣的,明明的同學們先商量好由其中的乙個人充當罪犯(在明明不知情的情況下),明明的任務就是找出這個罪犯。

接著,明明逐個詢問每乙個同學,被詢問者可能會說:

證詞內容 證詞含義

i am guilty. 我是罪犯

i am not guilty. 我不是罪犯

*** is guilty. ***是罪犯(***表示某個同學的名字)

*** is not guilty. ***不是罪犯

today is ***. 今天是***(***表示星期幾,是monday、tuesday、wednesday、thursday、friday、saturday、sunday中的乙個)

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

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

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

輸入格式

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

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

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

證詞每行不會超過250個字元。

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

輸出格式

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

資料範圍

1≤m≤20,

1≤n≤m,

1≤p≤100

輸入樣例:

315

mike

charles

kate

mike: i am guilty.

mike: today is sunday.

charles: mike is guilty.

kate: i am guilty.

kate: how are you?

?

輸出樣例:

mike
思路

首先我們列舉所有的可能事實,比如說事實今天星期 i,** 是 j.

如果同一天內存在兩個罪犯,我們無法判讀罪犯是誰,

如果一天存在乙個罪犯,我們可以判斷j是罪犯。

如果都不成立,說明找不到罪犯。

最細節的還是要看**

**如下:

但是我覺得這次y總寫的**不是很好,有很多邏輯對不上。我寫了一遍這樣的**

#include

#include

#include

using

namespace std;

const

int n=

25,m=

110;

string name[n]

;pair<

int,string> sentence[m]

;int n,m,p;

int st[n]

;string week[7]

=;intget_id

(string x)

////0 為 真 ,1為假話

intjudge

(int day,

int badman,

int id,string word)

bool

check

(int day,

int badman)

else

if(t==1)

}int fake=

0,other=0;

for(

int i=

0;i(st[i]==1

) fake++

;else

if(st[i]==-

1)other++

;return fake<=n&&n<=fake+other;

//我覺得這一步並不是很好

}int

main

(void

)int cnt=

0,p=-1

;for

(int day=

0;day<

7;day++)if

(cnt==1)

break

;//找到**了}if

(cnt==1)

else

}

4 7考試總結

太久沒做dp題了,一首涼涼 有一天,小王同學正走在路上,忽然天上掉下大把大把的餡餅 哈哈哈。這個只能說小王同學的人品太好,這餡餅就掉落在他身旁的10公尺範圍內。所以小王同學馬上去接餡餅,因為掉在地方的餡餅就不能吃了。他只能在這個10公尺範圍內接餡餅。由於小王同學是乙個非常優秀的oier,但他不是乙個...

4 7物件導向

class school def init self,school name,school address self.school name school name self.school address school address def school info self def classro...

每日總結47

使用外連線 left outer join 左外連線 左連線 結果集幾包括連線表的匹配行,也包括左連線表的所有行。right outer join 右外連線 右連線 結果集既包括連線表的匹配連線行,也包括右連線表的所有行。full cross outer join 全外連線 不僅包括符號連線表的匹配...