Description
呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体. Harry已经将他所+会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
Input
测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束.
Output
如果Harry可以完成他的作业,就输出"Yes.",否则就输出"No."(不要忽略了句号)
Sample Input
so soon river goes them got moon begin big 0
Sample Output
Yes.
Hint
Hint Harry 可以念这个咒语:"big-got-them". 错误代码:(wrong answer)
1 #include<stdio.h> 2 #include<string.h> 3 #define L strlen 4 char spell[100][50]; 5 int flag1=0,flag2=0; 6 int is_X(char b,char a[])//判断是否有类似bbbb的字符出现 7 { 8 if(L(a)==1&&a[0]==b) 9 return 1; 10 else if(L(a)!=1&&a[0]==b&&a[L(a)-1]==b) 11 return 1; 12 else 13 return 0; 14 } 15 int DFS(int x,int m)//实现深度搜索 16 { 17 int i; 18 if(spell[x][L(spell[x])-1]==‘m‘) 19 return 1; 20 for(i=0;i<m;i++) 21 if(spell[i][0]==spell[x][L(spell[x])-1]){ 22 int AC=DFS(i,m); 23 if(AC==1) 24 return 1; 25 } 26 return 0; 27 } 28 int main() 29 { 30 int i,j,AC; 31 for(i=0;;i++){//输入 32 scanf("%s",spell[i]); 33 if(spell[i][0]==‘0‘) 34 break; 35 } 36 flag1=0,flag2=0;//标记bbbb、mmmm类型的字符 37 for(j=0;j<i;j++) 38 { 39 if(is_X(‘b‘,spell[j])==1) 40 flag1=1; 41 else if(is_X(‘m‘,spell[j])==1) 42 flag2=1; 43 else if(spell[j][0]==‘b‘) 44 AC=DFS(j,i); 45 } 46 if(AC==1||(flag1==1&&flag2==1))//判断是否搜索到了目标 47 printf("Yes.\n"); 48 else 49 printf("No.\n"); 50 //printf("%d\n",i); 51 return 0 ; 52 }
心得:思想太单纯了 ,不知道哪个细节没有考虑到
时间: 2024-09-29 02:14:46