hdu1181 變形課(搜尋)

2022-08-24 19:09:12 字數 1509 閱讀 4286

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".

把所有的單詞首尾字母記下來,然後搜尋能不能把『b』變成『m』

dfs解法:

#include#include#define n 120

char str[n],a[n],b[n];

int book[n];

int ans,t=0;

void dfs(int num,char s)

for(i=0; ibfs解法:

#include#include#define n 120

char str[n],a[n],b[n];

int book[n],d[n];

int ans,t=0;

int main()

ans=0;

len=strlen(str);

a[0]=str[0];

b[0]=str[len-1];

for(t=1; ; t++)

memset(book,0,sizeof(book));

head=tail=0;

for(i=0; i}

while(headif(b[d[head]] == a[d[head]])

head++;

for(i=0; iif(a[i] == b[d[head]] && book[i] == 0 )

head++;

} if(ans == 1)

printf("yes.\n");

else

printf("no.\n");

} return 0;

}

hdu1181 變形課(搜尋)

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

HDU 1181 變形課 廣搜

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

hdu 1181 變形課 解題報告

又一條深搜,但是我做的時候根本沒有想到用dfs做,應該是數學模型還沒建立好吧!結果就是只能實現部分功能。我的做法是 由於只用到乙個單詞的首尾兩個字母,所以很自然的想到用結構體來儲存 接著比較所有輸進的單詞 直到出現結束標誌 0 預設的比較應該是按首字母的字典序公升序排列吧 排序是為了下面操作方便 然...