練習HDU 1181帶來的思考

2021-06-28 06:37:47 字數 1265 閱讀 1255

首先,我們來看看題目:

problem description

呃......變形課上harry碰到了一點小麻煩,因為他並不像hermione那樣能夠記住所有的咒語而隨意的將乙個棒球變成刺蝟什麼的,但是他發現了變形咒語的乙個統一規律:如果咒語是以a開頭b結尾的乙個單詞,那麼它的作用就恰好是使a物體變成b物體. 

harry已經將他所會的所有咒語都列成了乙個表,他想讓你幫忙計算一下他是否能完成老師的作業,將乙個b(ball)變成乙個m(mouse),你知道,如果他自己不能完成的話,他就只好向hermione請教,並且被迫聽一大堆好好學習的道理.

input

測試資料有多組。每組有多行,每行乙個單詞,僅包括小寫字母,是harry所會的所有咒語.數字0表示一組輸入結束.

output

如果harry可以完成他的作業,就輸出"yes.",否則就輸出"no."(不要忽略了句號)

sample input

so

soon

river

goes

them

gotmoon

begin

big0

sample output

yes.

hint

hint

harry 可以念這個咒語:"big-got-them".

由於我剛上大學才接觸c++,這種對別人來說相對水的dfs題目給我做也是需要糾結好久的。這是我糾結了2個小時左右給出的解答:

#include#include#includeusing namespace std;

bool dfs(char);

vectort,e;

int main()

if(dfs('b'))

cout<<"yes.";

else

cout<<"no.";

return 0;

}bool dfs(char a)

;int main()

if(dfs('b'))

cout<<"yes."<

通過做這一道題目,我體會到了當我們需要多次利用函式進行遞迴時,應當考慮多次遞迴的過程中是否有大量的重複的無意義的遞迴。比如上題,遞迴過程很簡單,但是如果按照我之前的**就會產生多次重複的工作,使得棧內生成很多個沒有意義的遞迴過程。而後面加了乙個用來判斷的陣列,使得諸如:bomb-bomb-bomb-……這種無限遞迴和young-guy-young-guy-……這種無意義的遞迴被排除掉,於是就能得出正確的答案。

hdu1181 變形課(搜尋)

problem description 呃.變形課上harry碰到了一點小麻煩,因為他並不像hermione那樣能夠記住所有的咒語而隨意的將乙個棒球變成刺蝟什麼的,但是他發現了變形咒語的乙個統一規律 如果咒語是以a開頭b結尾的乙個單詞,那麼它的作用就恰好是使a物體變成b物體.harry已經將他所會的...

hdu1181 變形課(搜尋)

problem description 呃.變形課上harry碰到了一點小麻煩,因為他並不像hermione那樣能夠記住所有的咒語而隨意的將乙個棒球變成刺蝟什麼的,但是他發現了變形咒語的乙個統一規律 如果咒語是以a開頭b結尾的乙個單詞,那麼它的作用就恰好是使a物體變成b物體.harry已經將他所會的...

HDU 1181 變形課 廣搜

problem description 呃.變形課上harry碰到了一點小麻煩,因為他並不像hermione那樣能夠記住所有的咒語而隨意的將乙個棒球變成刺蝟什麼的,但是他發現了變形咒語的乙個統一規律 如果咒語是以a開頭b結尾的乙個單詞,那麼它的作用就恰好是使a物體變成b物體.harry已經將他所會的...