【杭电1181】变形课
2016-07-28 21:13
239 查看
变形课Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d& %I64uSubmit StatusDescription呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体. Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理. Input测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束. Output如果Harry可以完成他的作业,就输出"Yes.",否则就输出"No."(不要忽略了句号) Sample Inputsosoonrivergoesthemgotmoonbeginbig0 Sample OutputYes.Hint
Hint Harry 可以念这个咒语:"big-got-them".
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct{char x,y;}a[10000];int vis[10000],flag,k,l;char s[10000];void dfs(int cur){if(a[cur].y=='m'){1447fflag=1;return;}else{int i;for(i=0;i<k;i++){if(!vis[i]&&a[cur].y==a[i].x) //如果该单词末字母不是m,那么连接一个首字母与他的末字母相同的单词,//并再次判断这个字母的末字母是否是m{vis[i]=1; //标记为搜索过的单词dfs(i);vis[i]=0; //还原为没有标记的,方便判断下一组单词;}}}}int main(){while(scanf("%s",s)!=EOF) {if(s[0]=='0') //每组的第一个单词{printf("No\n");continue;}k=1; flag=0;l=strlen(s);a[0].x=s[0];a[0].y=s[l-1];while(scanf("%s",s)!=EOF) {if(s[0]=='0')break;int l=strlen(s);a[k].x=s[0]; //记录首末字母a[k].y=s[l-1];k++; //记录单词个数}int i;for(i=0;i<k;i++){if(a[i].x=='b'){memset(vis,0,sizeof(vis));vis[i]=1;dfs(i);}if(flag)break;}printf("%s\n",flag?"Yes.":"No.");}return 0;}
相关文章推荐
- bash的基本特性详细讲解
- C++ STL 之 lower_bound and upper_bound
- Where Amazing Happens(打表)
- Python(切片)
- POJ 3170 Knights of Ni (暴力,双向BFS)
- SQL Server 常用的数据类型
- 掌握zigbee网络里的相关的重要概论
- List remove注意点
- HDOJ-1241 Oil Deposits
- 关于火狐和IE下select控制div
- bat面试内容
- mysql命令2
- jQuery 绑定 select 联动 手动触发
- Android 耳机按键与拔插监听
- iOS开发网络篇—监测网络状态
- 数据库数据拷贝
- ViewPager、ViewPager和Fragment组合使用的基本用法
- Codeforces 103A Testing Pants for Sadness
- kubernetes 1.3 的安装和集群环境部署
- MySQL之逻辑查询处理流程