HDU 1181 变形课(dfs)
来源:互联网 发布:自定义表单数据库设计 编辑:程序博客网 时间:2024/06/06 13:43
Description
呃……变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理
Input
测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束
Output
如果Harry可以完成他的作业,就输出”Yes.”,否则就输出”No.”(不要忽略了句号)
Sample Input
so
soon
river
goes
them
got
moon
begin
big
0
Sample Output
Yes.
Solution
记录每个字符串的首字符和尾字符,对于首字符是b的所有字符串都要以其为搜索起点开始dfs,每次找到可以相接的字符串往下深搜,不行就回溯直至找到尾字符是m的串或者枚举完毕,注意输入格式
Code
#include<cstdio>#include<cstring>#include<iostream>using namespace std;#define maxn 100000struct node{ int l,r;}c[10000];bool vis[10000];int n;int flag;void dfs(char x){ if(x=='m')//变形成功 { flag=1; return ; } for(int i=0;i<n;i++) { if(!vis[i]&&c[i].l==x)//找到可以继续往下变形的字符串 { vis[i]=true;//标记该串 dfs(c[i].r);//深搜 vis[i]=false;//回溯 } }}int main(){ char s[100]; while(scanf("%s",s)!=EOF) { if(!strcmp(s,"0")) continue; n=0; c[n].l=s[0];c[n].r=s[strlen(s)-1]; n++; while(scanf("%s",s),strcmp(s,"0")) { c[n].l=s[0];c[n].r=s[strlen(s)-1];//记录字符串第一个和最后一个字符即可 n++; } flag=0; for(int i=0;i<n;i++) { if(c[i].l=='b')//从所有可能作为起点的字符串分别开始搜索 { memset(vis,false,sizeof(vis));//初始化 vis[i]=true; dfs(c[i].r); } if(flag)//找到可行解 break; } if(flag)//有解 printf("Yes.\n"); else//无解 printf("No.\n"); } return 0;}
0 0
- hdu 1181变形课(DFS)
- HDU 1181 变形课 (dfs)
- HDU 1181 变形课 (DFS)
- hdu-1181 变形课(DFS)
- hdu 1181 变形课(dfs)
- HDU 1181 变形课(dfs)
- HDU 1181 变形课(DFS)
- HDU 1181 变形课(DFS)
- 【HDU】-1181-变形课(DFS)
- HDU 1181变形课(DFS)
- HDU 1181 变形课(DFS)
- HDU 1181变形课 (DFS)
- HDU 1181 变形课 (DFS)
- hdu 1181 变形课(DFS)
- hdu 1181 变形课 (dfs)
- hdu 1181 变形课 dfs
- HDU--1181 -- 变形课 [DFS]
- hdu 1181 变形课 (dfs- -)
- MD5加密代码
- 黑马程序员 --- NSArray和NSMutableArray的用法
- C++基础---string类的clear/erase/pop_back
- Windows上编译最新的CURL,含有zlib,openssl
- Servlet监听器在开发中的应用案例
- HDU 1181 变形课(dfs)
- ```**1到100之内的所有素数**
- NSURLConnection怎么把http改为https
- xmu 1018 零零漆的作
- epoll源码实现分析[整理]
- mysql索引详解(转)
- js获取表单值的两种方法
- HDU5424Rikka with Graph II(哈密顿图判断)
- Linux下nc的参数详解