题目大意:就是给你许多个字符串,当字符串为0时,这个test case 结束,问你能否找到 ‘b’到 ‘m’ 的路径。如题目给出的test case 的结果是 :big -- got --them 。有点像成语接龙。
解题思路: dfs 没想到还是看解题报告。 但是 dfs 是自己写的就是 输入的时候 参考了一下。
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int flage,k,visit[110],len;
char s[110],a[110][110];
void dfs(char x)
{
int i;
if(x=='m')
{
flage=1;
return;
}
for(i=0;i<k;i++)
{
if(a[i][0]==x&&!visit[i])
{
len=strlen(a[i]);
visit[i]=1;
dfs(a[i][len-1]);
visit[i]=0;
}
}
}
int main()
{
memset(visit,0,sizeof(visit));
flage=0;k=0;
while(scanf("%s",s)!=EOF)
{
if(s[0]=='0')
{
dfs('b');
if(flage==1)
printf("Yes.\n");
else
printf("No.\n");
memset(visit,0,sizeof(visit));
flage=0;k=0;
}
else
{
strcpy(a[k],s);
k++;
}
}
return 0;
}