HDU 1075 字典樹模板

2021-09-10 19:12:48 字數 1553 閱讀 5673

題目傳送門

伊格那丟很幸運,昨天他遇見了乙個火星人。但是他不懂火星人使用的語言。火星人給了他一本關於火星的歷史書和一本字典。現在伊格內修斯想把這本歷史書譯成英語。你能幫助他嗎?

輸入問題只有乙個測試用例,測試用例由兩個部分組成,字典部分和書籍部分。字典部分從一行開始包含乙個字串「start」,這個字串應該被忽略,然後是一些行,每一行包含兩個字串,第乙個是英語單詞,第二個是火星語中對應的單詞。帶有單個字串「end」的行表示目錄部分的結束,應該忽略該字串。書的部分以一行開始包含乙個字串「start」,這個字串應該忽略,然後用火星語寫一篇文章。你應該用詞典把這篇文章譯成英語。如果你在字典裡找到了這個詞,你應該翻譯它,把新單詞寫進你的譯文,如果你不能在字典裡找到這個詞,你不需要翻譯它,只是複製舊單詞到你的翻譯。空格(』 『),製表符(』\t』),輸入(』\n』)和所有標點符號不應翻譯。帶有單個字串「end」的行表示圖書部分的結束,這也是輸入的結束。所有單詞都是小寫的,每個單詞最多包含10個字元,每行最多包含3000個字元。

輸出在這個問題中,你必須輸出歷史書的譯文。

sample input

start

from fiwo

hello difh

mars riwosf

earth fnnvk

like fiiwj

endstart

difh, i』m fiwo riwosf.

i fiiwj fnnvk!

endsample output

hello, i』m from mars.

i like earth!

hint

huge input, scanf is recommended.

將火星語放在字典數里存起來。。 seek的時候直接返回該火星語對應的 地球語id

注意先scanf輸入然後在gets時 需要getchar()一下啊啊啊啊啊啊啊啊啊啊啊啊啊

#include #include #define m(a,b) memset(a,b,sizeof a)

using namespace std;

const int n=100;

struct trie

};trie *root;

void create(char *str,int num)

a->id=num;

}int seek(char *str,int p1,int p2)

return a->id;

}void del(trie *a)

char s1[500010][15],s2[500010];

int main()

scanf("%s",s1);

int index=-1;

getchar(); //!!!!!!!!!!!!!

while(gets(s2),strcmp(s2,"end"))

else

printf("%s",s1[num]);

index=-1;}}

}printf("\n");

}del(root);

}

hdu 1075 (字典樹對映)

問題 輸入一段英文,對照給的單詞的對映,輸出對映後的字串 yy 典型的字典樹問題,先處理好對映表,在一對映單詞結尾處記錄與之對應的單詞,後面字串處理一下,單個單詞進行查,找到後輸出,沒有輸出原始詞 剛開始交re越界,不解,覺得是指標問題,但找不出錯處 後來找到個神奇資料後改過就a了 start do...

HDU1075 不錯的字典樹題

題意 給你多條英語對應火星文,然後在下面輸入一堆火星文,要你翻譯成英文,如果一些火星文沒有對應的英文的話就輸出原火星文就可以了,有就輸出英文。題解 一看到這道題就想到了map容器,奈何挺久沒用過了,導致我很難下手,還是去看了別人怎麼寫的記憶才慢慢復甦,怎麼說呢,stl是個神器,但是我用不習慣。orz...

HDU1251字典樹模板

problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師...