深搜_简单的深搜(HDU_1181)
选定 'b' 开头的单词,深搜到底,如遇 'm' 结尾,返回。
#include <stdio.h> #include <string.h> #define M 1002 char map[M][M]; int flag[M],tot,re_flag; void dfs(int i) { char endCH = map[i][(int)strlen(map[i]) - 1]; if(endCH == 'm') { re_flag = 1; return ; } for(int j=0; j<tot; j++) { if(!flag[j] && endCH == map[j][0]) { flag[j] = 1; dfs(j); flag[j] = 0; } } } void run() { memset(flag,0,sizeof(flag)); re_flag = 0; for(int i=0; i<tot; i++) { if(map[i][0] == 'b') { flag[i] = 1; dfs(i); flag[i] = 0; } } } int main(int argc, char* argv[]) { #ifdef __MYLOCAL freopen("in.txt","r",stdin); #endif tot = 0; while(scanf("%s",map[tot++]) != EOF) { if(map[tot-1][0] == '0') { run(); printf("%s\n",re_flag ? "Yes." : "No."); tot = 0; } } return 0; }