zoukankan      html  css  js  c++  java
  • 变形课

    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.

     1 #include <stdio.h>
     2 #include <string.h>
     3 struct node
     4 {
     5  char head, tail;
     6 }c[10000];//用来记录字符串的首字母和最后一个字母
     7 char str[10000];//记录输入的字符串
     8 int used[10000], flag, cnt;//used用来记录该字符串是否已被查找过,flag记录查找结果,cnt记录字符串的个数
     9 void dfs(int x)//利用深搜解决问题,x是首字母为b的字符串的数组下标
    10 {
    11  if(c[x].tail == 'm')//当找到最后一个字符为m的字符串时,就可以返回了
    12  {
    13   flag = 1;//用flag记录搜索后的结果,如果找到末字符为m的字符串,令flag=1
    14   return ;
    15  }
    16  for(int i = 0; i < cnt; i++)//查找首字符与上一个字符串的末字符相同的字符串,直到找到末字符为m的字符串为止
    17  {
    18   if(c[i].head == c[x].tail && !used[i])//找到首字符与上一个字符串的末字符相同且未经查找的字符串,标记,进行下一次查找
    19   {
    20    used[i] = 1;
    21    dfs(i);
    22   }
    23  }
    24 }
    25 int main()
    26 {
    27  int  len;
    28  getchar();
    29  while(~scanf("%s",str))//先输入一个字符串
    30  {
    31   cnt = 0, flag = 0;
    32   if(str[0] != '0')//如果输入的字符串不为0的话,记录它的首字符和末字符
    33 { 34 len = strlen(str); 35 c[cnt].head = str[0]; 36 c[cnt].tail = str[len - 1]; 37 cnt++; 38 } 39 getchar(); 40 while(~scanf("%s",str))//继续输入字符串,直到输入0为止,并记录每一个字符串的首字符和末字符
    41 { 42 getchar();//要吸收掉换行符 43 if(str[0] == '0') 44 break; 45 else 46 { 47 len = strlen(str); 48 c[cnt].head = str[0]; 49 c[cnt].tail = str[len - 1]; 50 cnt++; 51 } 52 } 53 for(int j = 0; j < cnt; j++)//查找首字符为b的字符串,找到后,标记,利用深搜查找末字符为m的字符串 54 { 55 if(c[j].head == 'b') 56 { 57 used[j] = 1; 58 dfs(j); 59 } 60 } 61 if(flag) printf("Yes. ");//如果找到末字符为m的字符串,输出Yes.,否则输出No. 62 else printf("No. "); 63 } 64 return 0; 65 }
  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/digulove/p/4704870.html
Copyright © 2011-2022 走看看