(霍格沃茲!)好了進入正題
題意:
zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題
題庫格式:[魔咒] 對應功能
背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 [魔咒],也可能是對應功能
zjm 需要識別這個題目給出的是 [魔咒] 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找不到,輸出 「what?」
input:
首先列出魔咒詞典中不超過100000條不同的咒語,每條格式為:
[魔咒] 對應功能
其中「魔咒」和「對應功能」分別為長度不超過20和80的字串,字串中保證不包含字元「[」和「]」,且「]」和後面的字串之間有且僅有乙個空格。魔咒詞典最後一行以「@end@」結束,這一行不屬於詞典中的詞條。
詞典之後的一行包含正整數n(<=1000),隨後是n個測試用例。每個測試用例佔一行,或者給出「[魔咒]」,或者給出「對應功能」。
output:
每個測試用例的輸出佔一行,輸出魔咒對應的功能,或者功能對應的魔咒。如果在詞典中查不到,就輸出「what?」
sample input:
[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
sample output:
light the wand
accio
what?
what?
思路:
這道題要用到將字串轉為hash值。
將魔咒轉為hash1,功能轉為hash2
設定兩個字串陣列s1,s2,分別代表魔咒和功能。以及兩個map型別的變數mp1,mp2
對應關係:
mp1[hash1]=index,s1[index]=功能
mp2[hash2]=index,s2[index]=魔咒
總結:在對應的時候寫錯對應關係了,導致魔咒輸出魔咒,功能字串輸出功能。
**:
#include
#include
#include
#include
using
namespace std;
#define ull unsigned long long
string s1[
100005];
//魔咒
string s2[
100005];
//功能
int n;
mapint>mp1,mp2;
const ull seed=7;
ull hhash
(string s)
//算hash值
return ans;
}int
main()
cin>>n;
getchar()
;while
(n--
)else
cout<<
"what?"
<}else
else
cout<<
"what?"
<}
程式設計思維與實踐 week15
題目 題意 zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題 題庫格式 魔咒 對應功能 背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 魔咒 也可能是對應功能 zjm 需要識別這個題目給出的是 魔咒 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找...
程式設計思維與實踐 Week15 作業
problem description 哈利波特在魔法學校的必修課之一就是學習魔咒。據說魔法世界有100000種不同的魔咒,哈利很難全部記住,但是為了對抗強敵,他必須在危急時刻能夠呼叫任何乙個需要的魔咒,所以他需要你的幫助。給你一部魔咒詞典。當哈利聽到乙個魔咒時,你的程式必須告訴他那個魔咒的功能 當...
程式設計思維與實踐 Week15 作業
zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題 題庫格式 魔咒 對應功能 背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 魔咒 也可能是對應功能 zjm 需要識別這個題目給出的是 魔咒 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找不到,輸出 ...