HDU变形课

变形课

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 28226    Accepted Submission(s): 10289


Problem 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.
Hint
Hint
Harry 可以念这个咒语:"big-got-them".
 
 
分析:
利用结构体储存每个单词的头和尾,然后利用一个标志位数组来确保不重复

 

 

 

复制代码
 1 #include<stdlib.h>
 2 #include<stdio.h>
 3 #include<string.h>
 4 struct world
 5 {
 6     char end;
 7     char begin;
 8 } w[1000];
 9 int a[1000],flag,f;
10 void dfs(char c)
11 {
12     int i;
13     if(c=='m')
14     {
15         flag=1;
16         return ;
17     }
18     for(i=0; i<f; i++)
19     {
20         if(a[i]==0&&w[i].begin==c)
21         {
22             a[i]=1;
23             dfs(w[i].end);
24             a[i]=0;
25         }
26     }
27 }
28 int main()
29 {
30     char s[1000];
31     while(~scanf("%s",s))
32     {
33         if(!strcmp(s,"0"))
34             continue;
35         int i=0;
36         w[0].begin=s[0];
37         w[0].end=s[(strlen(s)-1)];
38         f=0;
39         f++;
40         while(scanf("%s",s),strcmp(s,"0"))
41         {
42             w[f].begin=s[0];
43             w[f].end=s[(strlen(s)-1)];
44             f++;
45         }
46         flag=0;
47         for(i=0; i<f; i++)
48         {
49             memset(a,0,sizeof(a));
50             if(w[i].begin=='b')
51             {
52                 a[i]=1;
53                 dfs(w[i].end);
54             }
55             if(flag)
56             {
57                 break;
58             }
59         }
60         if(flag)
61         {
62             printf("Yes.\n");
63         }
64         else
65         {
66             printf("No.\n");
67         }
68     }
69     return 0;
70 }
复制代码

 

posted @   西*风  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示