码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1181 变形课

时间:2016-02-26 23:37:49      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

【题目描述 - Problem Description】

  呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体. 
Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个B(ball)变成一个M(Mouse),你知道,如果他自己不能完成的话,他就只好向Hermione请教,并且被迫听一大堆好好学习的道理.

【输入 - Input】

【输出 - Output】

  测试数据有多组。每组有多行,每行一个单词,仅包括小写字母,是Harry所会的所有咒语.数字0表示一组输入结束.

如果Harry可以完成他的作业,就输出"Yes.",否则就输出"No."(不要忽略了句号)

 

【输入样例 - Sample Input】

【输出样例 - Sample Output】

so
soon
river
goes
them
got
moon
begin
big
0

Yes.

【题解】

  了解题目意思,这题就好做多了。

  给你一堆单词(字符串?),首尾相同的可以互相拼接,最后看看是否有 b** *** *** **m的情况存在。

  按题目意思来说b*m也是可以的。好吧,虽然没这个数据。

【代码 C++】

技术分享
 1 #include<cstdio>
 2 #include<cstring>
 3 #include <vector>
 4 struct Point{
 5     char data;
 6     bool flag;
 7 }add;
 8 std::vector<Point> data[26];
 9 bool dfs(int now){
10     for (int i = 0, j = data[now].size(); i < j; ++i){
11         if (data[now][i].flag == 0){
12             if (data[now][i].data == m - a) return 1;
13             data[now][i].flag = 1;
14             if (dfs(data[now][i].data)) return 1;
15             data[now][i].flag = 0;
16         }
17     }
18     return 0;
19 }
20 bool read(){
21     char temp[20];
22     int i;
23     while (gets(temp)){
24         if (temp[0] == 0) return 1;
25         i = temp[0] - a;
26         add.data = temp[strlen(temp) - 1] - a, add.flag = 0;
27         data[i].push_back(add);
28     }
29     return 0;
30 }
31 int main(){
32     int i, j, ed;
33     while (read()){
34         for (i = j = 0, ed = data[1].size(); i < ed; ++i){
35             data[1][i].flag = 1;
36             if (dfs(data[1][i].data)){ ++j; break; }
37             data[1][i].flag = 0;
38         }
39         if (j) puts("Yes.");
40         else puts("No.");
41         for (i = 0; i < 26; ++i) data[i].clear();
42     }
43     return 0;
44 }
DFS

BFS……懒癌发作

这题数据太水……不然我觉得并查集是A不了的,数据问题。

PS:因为数据太水,这题已经被玩坏了……

技术分享
1 #include<cstdio>
2 int main(){puts("Yes.\nNo.\nNo.");}
笑而不语

HDU 1181

HDU 1181 变形课

标签:

原文地址:http://www.cnblogs.com/Simon-X/p/5221959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!