最近很火的刑偵推理題,我也試了一下,答案是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 如果左邊的人比右邊的人殺人多,右邊的殺手將被殺掉,同樣被殺的殺手也會殺掉他右邊相鄰且比他殺人數量少的殺手。即殺手可以同時被左邊相鄰...