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

    变形课

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

    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".
     
    解题思路:
      只想说这个题很坑,杭电给出的测试数据太水了,第一次是yes,以后就全是no;
     
     
     1 #include<stdio.h>
     2 #include<string.h>
     3 main(){ 
     4     int k=1; 
     5     char s[100];
     6     while(scanf("%s",s)==1)
     7     {
     8         while(scanf("%s",s)&&s[0]!='0');
     9         if(k==1)printf("Yes.
    ");
    10         else printf("No.
    ");
    11         k=0;
    12     }
    13 }

    真正想做题练习的,看看下面这个代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 int main(void)
     4 {
     5     int a[26][26];
     6     char s[100];
     7     int i,j,k,n;
     8     while(1)
     9     {
    10         memset(a,0,sizeof(a));         //将数组 a 赋值为零; 
    11         gets(s);
    12         while(s[0]!='0')        
    13         {
    14             n=strlen(s)-1;
    15             a[s[0]-'a'][s[n]-'a']=1;        //逐个将输入的首尾字符转换成数字,储存在int型数组a中; 
    16             gets(s);
    17         }
    18         // 关键 ; 
    19         for(k=0;k<26;k++)        //前两层循环提取首字符为真的数据; 
    20         {
    21             for(i=0;i<26;i++)
    22             {
    23                 if(a[i][k])
    24                 {
    25                     for(j=0;j<26;j++)    //j循环寻找首尾相同的数据; 
    26                     {
    27                         if(a[k][j])
    28                         {
    29                             a[i][j]=1;    //如果找到了,把可以相连接的两个字符串的首字符和尾字符赋值为1; 
    30                         }
    31                     }
    32                 }
    33             }
    34         }        //这样,循环结束后,所有的可以连接的字符都已找出; 
    35         if(a[1]['m'-'a'])    //如果与题意相同,对应输出; 
    36             printf("Yes.
    ");
    37         else
    38             printf("No.
    ");
    39     }
    40     return 0;
    41 }

    可以的话,仔细看看,再帮我优化优化,我第一次交的时候AC了,第二次交竟然说我超时,想不通。

  • 相关阅读:
    ffmpeg rtmp推流 视频转码
    java日志发展史 log4j slf4j log4j2 jul jcl 日志和各种桥接包的关系
    nginx stream 流转发,可以转发rtmp、mysql访问流,转发rtmp、jdbc请求
    java web http 转https 通过nginx代理访问
    linux 服务器磁盘挂载
    novnc 通过websockify代理 配置多点访问
    linux 文件服务 minio 安装部署配置
    AOP实现原理,手写aop
    java 泛型
    JAVA反射getGenericSuperclass()用法
  • 原文地址:https://www.cnblogs.com/yeshadow937/p/3878655.html
Copyright © 2011-2022 走看看