字符串头尾的搜索。。依旧是简单的DFS,但是觉得输入的方式很特别,用0来判断输入的结束,这点是参考网上的代码的
#include<stdio.h>
#include<string.h>
char s[100];
int i = 0,flag = 0,visit[10000];
struct node
{
char start,end;
} str[10000];
void dfs(char ch)
{
if(ch == 'm')
flag = 1;
if(flag)
return;
for(int k = 0;k<i; k++)
{
if(visit[k])
continue;
if(str[k].start == ch)
{
visit[k] = 1;
dfs(str[k].end);
visit[k] = 0;
}
}
}
int main()
{
while(~scanf("%s",s))
{
if(!strcmp(s,"0")) continue;
i = 0;
str[i].start = s[0];
str[i].end = s[strlen(s)-1];
i++;
while(scanf("%s",s),strcmp(s,"0"))
{
str[i].start = s[0];
str[i].end = s[strlen(s)-1];
i++;
}
flag = 0;
for(int j = 0;j<i; j++)
{
if(str[j].start == 'b')
{
memset(visit,0,sizeof(visit));
visit[j] = 1;
dfs(str[j].end);
}
if(flag) break;
}
if(flag) printf("Yes.\n");
else printf("No.\n");
}
return 0;
}