hdu 1181 變形課 解題報告

2022-06-10 18:09:12 字數 1988 閱讀 1756

又一條深搜,但是我做的時候根本沒有想到用dfs做,應該是數學模型還沒建立好吧!結果就是只能實現部分功能。我的做法是:由於只用到乙個單詞的首尾兩個字母,所以很自然的想到用結構體來儲存;接著比較所有輸進的單詞(直到出現結束標誌'0'),預設的比較應該是按首字母的字典序公升序排列吧(排序是為了下面操作方便);然後通過for語句找,找乙個首字母為'b'的,找到就儲存這個單詞的尾部, 接著試圖想拿這個單詞的尾部覆蓋首字母是b的那個單詞......但是問題出現了,下乙個迴圈找要怎麼寫?到這裡我就卡機了,我的**是從當前的那個單詞往下找,但是發現會漏了這個單詞前面能夠匹配的情況。例如ca, bc, aw, wt,tm 這種情況本來是有解的,但是由於不能再往前找,所以無解!!另外乙個錯誤就是只能處理不包含相同首字母的情況。

例如這組輸入:  

so   soon   river   goes  them  got moon begin big

儲存的序列:    

bn   bg  gs  gt  mn  rr  so  sn     tm

因為只會搜尋一次,有兩個g的情況,只會處理第乙個g(gs),第二個g(gt,通向結果的道路) 不會再處理,如果gs gt位置互換,那麼是能夠得到結果的。所以我的**存在致命的錯誤啊。

網上看到用傳遞閉包、並查集、dfs做,但前兩種由於我還沒接觸,所以就借鑑人家dfs的做法。

說真的,通過這道題目,我發現我沒真正理解dfs的精髓,之前做的幾道發現是迷迷糊糊做的,具體的遞迴呼叫,棧的結構:後進先出。 真的讓我很難理解。惡補了一下這些知識,再加上那位好好人的師兄majia的超有耐心的教導,算是比較理解了。

1 #include 2 #include 

3using

namespace

std;45

intn;

6bool visit[100];7

8struct

words

9 word[101

];12

13bool dfs(char

ch)14

27}28return0;

29}3031

intmain()

3244 memset(visit, 0, sizeof

(visit));

45if (dfs('b'

))46 printf("

yes.\n

");

47else

48 printf("

no.\n

"); //

如果找遍所有單詞都沒有找到,就輸出'no'49}

50return0;

51 }

2014.7.21 再寫的(因為搜尋太差了,先把以前沒有做出的,但看別人做對的題目重新做過!!!),想不到沒留意到題目中說的「測試資料有多組」 而wa了幾次。

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;78

const

int maxn = 5000 + 10;9

char

s[maxn];

10int

flag, l, vis[maxn];

1112

struct

node

13ball[maxn];

1617

void dfs(char

ch)18

24for (int i = 0; i < l; i++)

2532}33

}3435int

main()

3650 dfs('b'

);51 printf("

%s\n

", flag ? "

yes.

" : "

no."

);52}53

return0;

54 }

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已經將他所會的...