变形课
Problem Description
呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
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.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<string.h> 3 4 int vis[1000],n,flag; 5 char a[1000][3]; 6 7 void dfs(char str) 8 { 9 int i; 10 char temp; 11 if(str=='m') 12 { 13 flag=1; 14 return ; 15 } 16 for(i=1; i<=n; i++) 17 { 18 if(flag==1) break; 19 if(vis[i]==0&&a[i][1]==str) 20 { 21 temp=str; 22 vis[i]=1; 23 str=a[i][2]; 24 dfs(str); 25 vis[i]=0; 26 str=temp; 27 } 28 } 29 } 30 31 int main() 32 { 33 int len; 34 char b[100],temp='b'; 35 n=0; 36 while(scanf("%s",b)!=EOF) 37 { 38 if(b[0]=='0') 39 { 40 flag=0; 41 dfs(temp); 42 if(flag!=0) puts("Yes."); 43 else puts("No."); 44 n=0; 45 } 46 else 47 { 48 n++; 49 vis[n]=0; 50 a[n][1]=b[0]; 51 len=strlen(b); 52 a[n][2]=b[len-1]; 53 } 54 } 55 56 return 0; 57 }