2018刑偵科推理試題

2022-06-22 00:48:12 字數 3112 閱讀 4766

最近很火的刑偵推理題,我也試了一下,答案是bcaca cdaba

如果直接推理很難,還要不斷試錯。既然這樣不如借助計算機暴力出結果(因為只有4^9=262144種情況,可以無腦秒出)。具體做法是

首先生成所有可能的答案(遞迴生成解答樹)

篩選掉不符合10個題目要求的(剪枝,剪枝順序還可以優化)

剩下唯一乙個就是答案

附上源**:

#include #include #define pass  

char answers[10];

// auxiliary functions

int findmaxcount()

return *std::max_element(abcd, abcd + 4);

};

int findmincount()

return *std::min_element(abcd, abcd + 4);

};

bool samewithproblem8(int prob1, int probl2)

else if (problem8anaswer == 'b')

else if (problem8anaswer == 'c')

else if (problem8anaswer == 'd')

else

return true;

};

// bcaca cdaba

// all 4^9=262144 occurrences could be enumerated in the solution tree

void enumerateing(int problemcnt)

else if (answers[1] == 'b')

else if (answers[1] == 'c')

else if (answers[1] == 'd')

else

// check 3

if (answers[2] == 'a')

else if (answers[2] == 'b')

else if (answers[2] == 'c')

else if (answers[2] == 'd')

else

// check 4

if (answers[3] == 'a')

else if (answers[3] == 'b')

else if (answers[3] == 'c')

else if (answers[3] == 'd')

else

// check 5

if (answers[4] == 'a')

else if (answers[4] == 'b')

else if (answers[4] == 'c')

else if (answers[4] == 'd')

else

// check 6

if (answers[5] == 'a')

else if (answers[5] == 'b')

else if (answers[5] == 'c')

else if (answers[5] == 'd')

else

// check 7

int abcd[4];

for (int i = 0; i < 10; i++)

char whichcharmincount = 'a';

int min = abcd[0];

for (int k = 1; k < 4; k++)

} if (answers[6] == 'a')

else if (answers[6] == 'b')

else if (answers[6] == 'c')

else if (answers[6] == 'd')

else

// check 8

auto nearproblem1 = [=](int prob1)->bool ;

if (answers[7] == 'a')

else if (answers[7] == 'b')

else if (answers[7] == 'c')

else if (answers[7] == 'd')

else

// check 9

if (answers[8] == 'a')

else if (answers[8] == 'b')

else if (answers[8] == 'c')

else if (answers[8] == 'd')

else

// check 10

int diff = findmaxcount() - findmincount();

if (answers[9] == 'a')

else if (answers[9] == 'b')

else if (answers[9] == 'c')

else if (answers[9] == 'd')

else

// finally, we got the unique solution and print it

std::cout << "finally we got the unqiue solution:\n";

for (auto x : answers)

std::cout << "\n";

return;

} for (char i = 0; i < 4; i++)

}

int main()

C語言(遞迴法構造答案全集)2018刑偵科推理試題

今年早些時候,這張火遍了網路,當時就想著,這個題目用計算機來解,應該是很方便的。無奈當時工作忙,沒有時間弄。最近時間閒,就鼓搗了一下,花費幾個小時,成功執行得出答案。但上網一看,各路大神早就給出了n種解法。其中找到一篇和我一樣用暴力窮舉實現的。我的解法和他的相比,區別在 我窮舉所有答案時,是用遞迴演...

華科2023年筆試題大概

著重學習知識點,寫偽 的基礎規則 資料庫 1.畫e r圖 3個重點 屬性,實體 聯絡 2.判斷乙個函式依賴是否存在 如果x y,則求x的閉包,看裡面是否包含y 具體步驟 找出f中左部屬於x的部分,將其右部加入x,如此迴圈直至x u或者不發生改變即可。3.sql語句 多練習4.關係代數表示式 如果是第...

2018科大訊飛筆試題目

n個殺手,從1 n依次排列,每個殺手殺了n個人記為m。即輸入為 第一行 殺手的個數 n第二行n個數,分別代表殺手殺人的個數 如 10 9 7 8 6 5 3 4 2 1 如果左邊的人比右邊的人殺人多,右邊的殺手將被殺掉,同樣被殺的殺手也會殺掉他右邊相鄰且比他殺人數量少的殺手。即殺手可以同時被左邊相鄰...