題目傳送門
伊格那丟很幸運,昨天他遇見了乙個火星人。但是他不懂火星人使用的語言。火星人給了他一本關於火星的歷史書和一本字典。現在伊格內修斯想把這本歷史書譯成英語。你能幫助他嗎?
輸入問題只有乙個測試用例,測試用例由兩個部分組成,字典部分和書籍部分。字典部分從一行開始包含乙個字串「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,它們代表的是老師...