hdu 1181 dfs

来源:互联网 发布:IT界伍飞宇 编辑:程序博客网 时间:2024/05/16 01:33

题意:中文题,不解释了。

思路:DFS。从'b'开始搜,“首尾”的搜索,知道找到'm'。

终于AC了,虽说代码比较搓了,但是也是比较开心啦,呵呵~

#include<iostream>#include<string>using namespace std;char s[200][200];bool flag1,flag2;int t;bool vis[200];void dfs(int i,char c){  int e;  if(flag2) return;  if(i>t) return;  e=strlen(s[i])-1;  if(s[i][e]=='m'&&flag1) {flag2=1;return;}  if(s[i][0]=='b'&&!flag1)  {    flag1=1;    vis[i]=1;    for(int j=0;!vis[j]&&j<t;j++)    {      dfs(j,s[i][e]);    }    flag1=0;  }  if(s[i][0]==c)  {    vis[i]=1;   dfs(i+1,s[i][e]);   vis[i]=0;  }  else dfs(i+1,c);  }int main(){  int i;  i=0;  while(scanf("%s",&s[i++])!=EOF)  {    while(s[i-1][0]!='0')    {    scanf("%s",&s[i++]);    }  flag1=flag2=0;  t=i;  memset(vis,0,sizeof(vis));  dfs(0,'b');    if(flag2) printf("Yes.\n");    else  printf("No.\n");    i=0;  }  system("pause");}


原创粉丝点击