DFS记忆化搜索(1181)
2016-05-07 21:07
344 查看
变形课
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 20342 Accepted Submission(s): 7336
[align=left]Problem Description[/align]
呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.
[align=left]Input[/align]
测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束.
[align=left]Output[/align]
如果Harry可以完成他的作业,就输出"Yes.",否则就输出"No."(不要忽略了句号)
[align=left]Sample Input[/align]
so soon river goes them got moon begin big 0
[align=left]Sample Output[/align]
Yes. HintHint Harry 可以念这个咒语:"big-got-them".
/*------------------Header Files------------------*/ #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <algorithm> #include <cstdlib> #include <ctype.h> #include <cmath> #include <stack> #include <queue> #include <deque> #include <map> #include <vector> #include <set> #include <limits.h> using namespace std; /*------------------Definitions-------------------*/ #define LL long long #define uLL unsigned long long #define PI acos(-1.0) #define INF 0x3F3F3F3F #define MOD 1000000007 #define MAX 105 #define lson rt<<1,l,m #define rson rt<<1|1,m+1,r /*---------------------Work-----------------------*/ bool flag[30][30],mflag; bool vis[30]; void DFS(char ch) { int bian=ch-'a'+1; if(vis[bian]) return ; vis[bian]=true; for(int j=1;j<=26;j++) { if(flag[bian][j]) { if(j=='m'-'a'+1) { mflag=true; return ; } else DFS('a'+j-1); } } } void work() { string temp; while(cin>>temp) { memset(flag,0,sizeof(flag)); while(temp!="0") { int a=temp[0]-'a'+1,b=temp[temp.length()-1]-'a'+1; flag[a][b]=true; cin>>temp; } mflag=false; memset(vis,0,sizeof(vis)); DFS('b'); if(mflag) printf("Yes.\n"); else printf("No.\n"); } } /*------------------Main Function------------------*/ int main() { //freopen("test.txt","r",stdin); work(); return 0; }
相关文章推荐
- 多线程编程
- hdu-3555 Bomb(数位dp)
- 莫比乌斯反演模板
- MyBatis 项目学习
- SQL中 group by 1, order by 1 语句是什么意思
- java多线程
- 最长子序列问题(时间复杂度O(nlog(n))
- Object-c------计算代码行数小demo
- 16.5.6-7学习内容
- 第六次作业:抽奖系统
- 十七、代理设计模式
- Mysql 里CHAR和VARCHAR的最大长度及一些注意事项
- fedora 的学习历程
- Activity中ConfigChanges属性的用法
- 开源新闻速递:朝鲜的桌面市场份额,Windows 还是第一
- 空心三角形(图形的输出)c语言
- 118. Pascal's Triangle
- 7.UI补充/03静态库和内存分析、硬件获取
- 2016sdau课程练习专题三 1010
- 不调用库函数实现 strCpy