邏輯題 假設河的同一側有警察 強盜

2021-06-29 17:00:36 字數 917 閱讀 1933

假設河的同一側有警察、強盜、路人a、路人a的兩個孩子(a1,a2)、路人b、路人b的兩個孩子(b1、b2),他們想要安全過河,限制條件如下:

1、假設警察不在,強盜會殺死所有的跟他在一起的人

2、假設路人a離開,路人b和路人a的孩子在一起,路人a的孩子會死掉

3、假設路人b離開,路人a和路人b的孩子在一起,路人b的孩子會死掉

4、河面上有一條船,但一次最多可以容納兩人過河

5、只有警察、路人a、路人b會划船

請給出你的過河方案。

#include using namespace std;

struct state

};bool ok(state s)

return flag;

}bool valid(state s)

const char str[100]=;

string path[100];

bool found=false;

mapm;

string tostring(state s)

temp+=s.boat+'0';

//cout << temp << endl;

return temp;

}void dfs(state s,int depth)

cout << "done" << endl;

found=true;

return;

} m[tostring(s)]=true;

if (!s.boat)//left

}if (s.l[2])

}if (s.l[5])

}} else//right

}if (s.r[2])

}if (s.r[5])

} }}

int main()

利用向量計算快速判定一點在直線的哪一側

很實用的一片判斷點與直線關係的文章,這個例子是用來說明向量運算可以快速判定一點在直線的哪一側。如上圖所示,直線是從pa到pb的直線ab。下面的工作是構建乙個方法,來判斷某點在這條直線ab的左下側還是右上側。如上圖所示,pc點就在直線ab的右上側,而pd點就在直線ab的左下側。這裡要用向量運算來解決這...

邏輯題 分享一道在UC筆試中遇到的邏輯題

題目是這樣的 有十袋金子,每袋中有十個金子,每個金子重10克,有一袋金子是假的,每個金子重9克,請問如何通過一次稱量後,找出這一袋假金子。後來通過別人的答案思考了一下,其實不難,要理清思路 如果說是要找出假金子的那一袋,那就是說要找出哪一袋,而這個哪一袋肯定要通過編號才能指明清楚。但是最終要指明是第...

筆試裡的一道邏輯題

火車上,來自美 法 韓 俄四國的甲 乙 丙 丁四位旅客恰好相聚在某個車廂中。他們每個人除了會說本國語言外,還會說其他三國語言中的一種,有一種語言三個人都會說。這四位旅客交談的有關情況如下 乙不會說英語,當甲與丙交談時,他卻能替他們作翻譯 甲是南韓人,丁不會說韓語,但他倆卻能毫無困難地交談 乙 丙 丁...