哈利波特在魔法學校的必修課之一就是學習魔咒。據說魔法世界有100000種不同的魔咒,哈利很難全部記住,但是為了對抗強敵,他必須在危急時刻能夠呼叫任何乙個需要的魔咒,所以他需要你的幫助。 給你一部魔咒詞典。當哈利聽到乙個魔咒時,你的程式必須告訴他那個魔咒的功能;當哈利需要某個功能但不知道該用什麼魔咒時,你的程式要替他找到相應的魔咒。如果他要的魔咒不在詞典中,就輸出「what?」
首先列出詞典中不超過100000條不同的魔咒詞條,每條格式為:[魔咒] 對應功能
其中「魔咒」和「對應功能」分別為長度不超過20和80的字串,字串中保證不包含字元「[」和「]」,且「]」和後面的字串之間有且僅有乙個空格。詞典最後一行以「@end@」結束,這一行不屬於詞典中的詞條。
詞典之後的一行包含正整數n(<=1000),隨後是n個測試用例。每個測試用例佔一行,或者給出「[魔咒]」,或者給出「對應功能」。
每個測試用例的輸出佔一行,輸出魔咒對應的功能,或者功能對應的魔咒。如果魔咒不在詞典中,就輸出「what?」示例1
[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?
魔咒也就是中的內容同樣存在空格" ",因此不可以利用cin或scanf進行字串的讀取
我在這裡利用的是gets讀取一整行,然後再找到 "]" 對這一整行的字串進行分割
在這裡我用了乙個結構體儲存每一行的魔咒詞條(裡面有兩個字串乙個存魔咒乙個存功能)
建立魔咒詞典後最關鍵的就是分割輸入的字串了
利用temp臨時字串接受輸入後,利用遍歷一次字串,找到"]"的位置,用index記錄
通過觀察輸入的格式,[魔咒]後會有乙個空格與功能連線,即index+1的位置是乙個空格
我們把這個空格改為\0,方便使用strcpy函式直接進行拷貝
舉個栗子,我們第一行得到的字串在字元陣列的形式是:
[expelliarmus] the disarming charm\0 -> [expelliarmus]\0the disarming charm\0魔咒字串 功能字串
這樣做方便的地方就是魔咒的拷貝直接通過temp這個首位址就能完成拷貝(因為有乙個我們改的\0可以完成前半段的拷貝)
而後半段的首位址就是temp+index+1,同樣有字串本身結尾帶著的\0完成字串的拷貝
我們先把前半段和字串"@end@"比較。如果相等就直接跳出字串輸入的這個迴圈。
然後輸入整數n
注意!cin>>n輸入了乙個整數後,利用乙個\n結束了,我們要用乙個getchar()接收這個\n,否則這個\n就直接被gets()讀取,當做乙個空串存入temp中。
接著就是temp字串和詞典的比較了。
如果temp[0]是"["就和魔咒字串比,輸出功能字串。
否則和功能字串比,輸出魔咒字串(記得去掉前後的"["和"]")。
如果比到最後都沒找到,就輸出what?
最後是**
#include #include #include #include using namespace std;
struct dictionarydic[100010];
int main()
strcpy(dic[len].magic,temp);
strcpy(dic[len].func,temp+index+1);
len++;
} int n;
cin>>n;
getchar();
while(n--)
return 0;
}
1029 魔咒詞典
1029 魔咒詞典.cpp 定義控制台應用程式的入口點。題目1029 魔咒詞典 時間限制 5 秒記憶體限制 32 兆特殊判題 否提交 5097解決 1478 題目描述 哈利波特在魔法學校的必修課之一就是學習魔咒。據說魔法世界有100000種不同的魔咒,哈利很難全部記住,但是為了對抗強敵,他必須在危急...
1051 魔咒詞典
時間限制 1 sec 記憶體限制 128 mb 提交 539 解決 316 提交 狀態 討論版 哈利波特在魔法學校的必修課之一就是學習魔咒。據說魔法世界有100000種不同的魔咒,哈利很難全部記住,但是為了對抗強敵,他必須在危急時刻能夠呼叫任何乙個需要的魔咒,所以他需要你的幫助。給你一部魔咒詞典。當...
題目1029 魔咒詞典
題目1029 魔咒詞典 時間限制 5 秒 記憶體限制 32 兆 特殊判題 否 提交 3768 解決 1085 題目描述 哈利波特在魔法學校的必修課之一就是學習魔咒。據說魔法世界有100000種不同的魔咒,哈利很難全部記住,但是為了對抗強敵,他必須在危急時刻能夠呼叫任何乙個需要的魔咒,所以他需要你的幫...