#include<stdio.h>
#include<string.h>
int visited[1000],n,flag;
char a[1000][3];
void dfs(char str)
{
int i;
char temp;
if(str=='m')
{
flag=1;
return ;
}
for(i=1;i<=n;i++)
{
if(flag==1)
break;
if(visited[i]==0&&a[i][1]==str)
{
temp=str;
visited[i]=-1;
str=a[i][2];
dfs(str);
visited[i]=0;
str=temp;
}
}
}
int main()
{
int len;
char b[100],temp='b';
n=0;
while(scanf("%s",b)!=EOF)
{
if(b[0]=='\0')
break;
if(b[0]=='0')
{
flag=0;
dfs(temp);
if(flag!=0)
printf("Yes.\n");
else
printf("No.\n");
n=0;
}
else
{
n++;
visited[n]=0;
a[n][1]=b[0];
len=strlen(b);
a[n][2]=b[len-1];
}
}
return 0;
}
思路:深搜的思想,比较简单的dfs,注意下如果就一个单词:bim的话输出的是yes.。
代码实现: