本题链接:点击打开链接
本题是求有没有以'b'开头,以'm'结尾的单词,头和尾相同的单词可以拼接成一个单词。解题思路,用一个结构体来存
放所给单词的头和尾,然后使用递归进行查找,将查找过的做上标记,AC代码:
#include<stdio.h>
#include<string.h>
char str[100];
int mark[10000];
int i,flag;
struct node
{
char start,end;
}a[10000];
void dfs(int k)
{
if(a[k].end =='m')
{
printf("Yes.\n");
flag=1;
return ;
}
else
{
for(int j=0;j<i;j++)
{
if(!mark[j]&&a[j].start == a[k].end )
{
mark[j]=1;
dfs(j);
mark[j]=0;
}
}
}
}
int main()
{
while(scanf("%s",str)!=EOF)
{
i=0;
flag=0;
if(str[0]=='0')
{
printf("No.\n");
continue;
}
int len=strlen(str)-1;
a[i].start =str[0];
a[i].end =str[len];
i++;
while(scanf("%s",str)!=EOF)
{
if(str[0]=='0')
break;
int len=strlen(str)-1;
a[i].start=str[0];
a[i].end =str[len];
i++;
}
for(int k=0;k<i;k++)
{
if(a[k].start =='b')
{
memset(mark,0,sizeof(mark));
mark[k]=1;
dfs(k);
}
if(flag)
break;
}
if(!flag)
printf("No.\n");
}
return 0;
}