首页 > 代码库 > B - 变形课

B - 变形课

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     else13         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     else49         printf("No.\n");50     //printf("%d\n",i);51     return 0 ;52 }


心得:思想太单纯了 ,不知道哪个细节没有考虑到


B - 变形课