• HDU 1181 变形课


    【题目描述 - 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.
    No.
    No.");}
    笑而不语

    HDU 1181

  • 相关阅读:
    LightDB/postgresql内置特性之访问oracle之oracle_fdw介绍
    Java系列 | Linux系统中运行JMeter脚本
    适合新手练习的python开源经典源码
    基于python的json和cvs格式转换
    基于python中librosa的声音混音实例解析
    基于python的多线程串口处理实例源码解析
    基于python的定时PC定时录音机实现
    python librosa 实例解析
    噪声分贝测试测量仪工作原理分析
    Python中的join()函数的用法实例分析
  • 原文地址:https://www.cnblogs.com/Simon-X/p/5221959.html
Copyright © 2020-2023  润新知