zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題
題庫格式:[魔咒] 對應功能
背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 [魔咒],也可能是對應功能
zjm 需要識別這個題目給出的是 [魔咒] 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找不到,輸出 「what?」
首先列出魔咒詞典中不超過100000條不同的咒語,每條格式為:
[魔咒] 對應功能
其中「魔咒」和「對應功能」分別為長度不超過20和80的字串,字串中保證不包含字元「[」和「]」,且「]」和後面的字串之間有且僅有乙個空格。魔咒詞典最後一行以「@end@」結束,這一行不屬於詞典中的詞條。
詞典之後的一行包含正整數n(<=1000),隨後是n個測試用例。每個測試用例佔一行,或者給出「[魔咒]」,或者給出「對應功能」。
每個測試用例的輸出佔一行,輸出魔咒對應的功能,或者功能對應的魔咒。如果在詞典中查不到,就輸出「what?」
[expelliarmus] the disarming charm
[rictusempra] send a jet of silver light to hit the enemy
[tarantallegra] control the movement of one』s legs
[serpensortia] shoot a snake out of the end of one』s wand
[lumos] light the wand
[obliviate] the memory charm
[expecto patronum] send a patronus to the dementors
[accio] the summoning charm
@end@
4[lumos]
the summoning charm
[arha]
take me to the sky
light the wand
accio
what?
what?
將魔咒與對應功能儲存到陣列中,使用map來記錄字串雜湊值與陣列下標。
對於要查詢的字串,求取其雜湊值並在map中查詢,若存在則輸出對應下標的字串,否則輸出「what?」。
#include
#include
#include
#include
#include
using
namespace std;
const
int maxn =
1000005
;const
int seed =7;
char s1[maxn][25
], s2[maxn][85
];int cnt;
map<
unsigned
,int
> mp;
unsigned
hash
(string s)
void
split
(string s)
s4 +
= s[i];}
cnt++
; mp[
hash
(s3)
]= cnt;
strcpy
(s1[cnt]
, s3.
c_str()
);mp[
hash
(s4)
]= cnt;
strcpy
(s2[cnt]
, s4.
c_str()
);}void
find
(string s)
printf
("%s\n"
, s2[mp[thehash]])
;return;}
else
printf
("%s\n"
, s1[mp[thehash]])
;return;}
}int
main()
int n;
scanf
("%d"
,&n)
;getchar()
;while
(n--
)return0;
}
Week15 A ZJM與霍格沃茲
zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題 題庫格式 魔咒 對應功能 背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 魔咒 也可能是對應功能 zjm 需要識別這個題目給出的是 魔咒 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找不到,輸出 ...
Week 15 作業A ZJM 與霍格沃茲
zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題 題庫格式 魔咒 對應功能 背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 魔咒 也可能是對應功能 zjm 需要識別這個題目給出的是 魔咒 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找不到,輸出 ...
Week15 作業A ZJM 與霍格沃茲
給出一系列二元組 原字串 翻譯字串 進行若干次查詢,給出原字串或翻譯字串,輸出對應的翻譯字串或原字串。首先給出若干行,每行乙個二元組 原字串 翻譯字串 最後一行以 end 結尾 之後一行給出乙個整數q,表示詢問次數 之後q行,每行乙個 原字串 或翻譯字串 輸出q行,每行輸出對應字串。expellia...