zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Mongodb 插入数据的方式
    vue插槽(slot)的模板与JSX写法
    vue-resource+iview上传文件取消上传
    封装全局icon组件 svg (仿造element-ui源码)
    vue 修改框架less变量
    vue webpack多页面构建
    vue2 自定义全局组件(Loading加载效果)
    制作npm插件vue-toast-m实例练习
    iview+axios实现文件取消上传
    CSS Variables
  • 原文地址:https://www.cnblogs.com/Simon-X/p/5221959.html
Copyright © 2011-2022 走看看