首页 > 代码库 > ACM1880魔咒词典
ACM1880魔咒词典
魔咒词典
Problem Description
哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”
Input
首先列出词典中不超过100000条不同的魔咒词条,每条格式为:
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以“@END@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(<=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过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 wandacciowhat?what?
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 class Alphabet 6 { 7 public: 8 char sign[30],power[100]; 9 Alphabet *next; 10 }; 11 class Process 12 { 13 public: 14 Process() 15 { 16 head=NULL; 17 p=NULL; 18 record=NULL; 19 } 20 void Input() 21 { 22 char sh[150]; 23 char s1[30],s2[100]; 24 while(gets(sh)&&(strcmp(sh,"@END@")!=0)) 25 { 26 char *ch=strchr(sh,‘]‘); 27 ch+=2; 28 int i; 29 for( i=0;sh[i]!=‘]‘;i++) 30 { 31 s1[i]=sh[i]; 32 } 33 s1[i]=sh[i]; 34 s1[i+1]=0; 35 Insert(s1,ch); 36 } 37 scanf("%d",&num);getchar(); 38 for(int i=1;i<=num;i++) 39 { 40 char s[100]; 41 gets(s); 42 if(s[0]==‘[‘) 43 SearchSign(s); 44 else 45 SearchPower(s); 46 } 47 } 48 void SearchSign(char *s) 49 { 50 p=head; 51 while(p!=NULL) 52 { 53 if(strcmp(p->sign,s)==0) 54 { 55 printf("%s\n",p->power); 56 return; 57 } 58 p=p->next; 59 } 60 printf("what?\n"); 61 } 62 void SearchPower(char *s) 63 { 64 p=head; 65 while(p!=NULL) 66 { 67 if(strcmp(p->power,s)==0) 68 { 69 int n=strlen(p->sign); 70 for(int i=1;i<n-1;i++) 71 { 72 printf("%c",p->sign[i]); 73 } 74 printf("\n"); 75 return; 76 } 77 p=p->next; 78 } 79 printf("what?\n"); 80 } 81 void Insert(char *s1,char *s2) 82 { 83 p=new Alphabet; 84 strcpy(p->sign,s1); 85 strcpy(p->power,s2); 86 if(head==NULL) 87 head=p; 88 else 89 record->next=p; 90 record=p; 91 record->next=NULL; 92 } 93 void OUTPUTALL() 94 { 95 p=head; 96 while(p!=NULL) 97 { 98 cout<<p->sign<<" "<<p->power<<endl; 99 p=p->next;100 }101 //printf("what?\n");102 }103 private:104 int num;105 Alphabet *head,*p,*record;106 };107 int main()108 {109 while(1)110 {111 Process p1;112 p1.Input();113 }114 return 0;115 }
[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@
8
[lumos]
the summoning charm
[arha]
take me to the sky
the memory charm
send a Patronus to the dementors
[tarantallegra]
send a jet of silver light to hit the enemy
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。