zoukankan      html  css  js  c++  java
  • 训练 の 牛棚回声

    牛棚回声

    描述

    奶牛们灰常享受在牛栏中牟叫,因為她们可以听到她们牟声的回音。虽然有时候并不能完全听到完整的回音。Bessie曾经是一个出色的秘书,所以她精确地纪录了所有的牟叫声及其回声。她很好奇到底两个声音的重复部份有多长。

    输入两个字符串(长度為1到80个字母),表示两个牟叫声。你要确定最长的重复部份的长度。两个字符串的重复部份指的是同时是一个字符串的前缀和另一个字符串的后缀的字符串。

    我们通过一个例子来理解题目。考虑下面的两个牟声:

         moyooyoxyzooo
         yzoooqyasdfljkamo

    第一个串的最后的部份"yzooo"跟第二个串的第一部份重复。第二个串的最后的份"mo"跟第一个串的第一部份重复。所以"yzooo"跟"mo"都是这2个串的重复部份。其中,"yzooo"比较长,所以最长的重复部份的长度就是5。

    输入格式

    输入格式:

    * 前两行: 每一行是1个字符串表示奶牛的牟声或它的回声。



    输出格式

    输出格式:

    * 第一行: 包含一个单独的整数表示输入的2个字符串中,一个字符串的前缀和另一个字符串的后
    缀的最长的重复部份的长度。

    测试样例1

    输入

    abcxxxxabcxabcd 
    abcdxabcxxxxabcx

    输出

    11

    备注

    "abcxxxxabcx"是第一个字符串的前缀和第二个字符串的后缀。
     
    就是个字符串的模拟
     
     1 #include<stdio.h>
     2 #include<string.h>
     3 char a[100],b[100];
     4 int main()
     5 {
     6     int i,j,max1,max2,max,k;
     7     while(scanf("%s",a)!=EOF)
     8     {
     9         getchar();
    10         scanf("%s",b);
    11         max1=0;max2=0;max=0;
    12         if(strcmp(a,b)==0)
    13         {
    14             printf("%d
    ",strlen(a));
    15             continue;
    16         }
    17         k=0;
    18         for(i=0;i<strlen(a);i++)
    19         {
    20             if(a[i]==b[k])
    21             {
    22                 max1++;
    23                 k++;
    24         
    25             }
    26             else if(a[i]!=b[k])
    27             {
    28                 i=-1;
    29                 max1=0;
    30                 k++;
    31             }
    32             if(k==strlen(b))
    33                 break;
    34         }
    35             k=0;
    36         for(i=0;i<strlen(b);i++)
    37         {
    38             if(b[i]==a[k])
    39             {
    40                 max2++;
    41                 k++;
    42             
    43             }
    44             else if(b[i]!=a[k])
    45             {
    46                 i=-1;
    47                 max2=0;
    48                 k++;
    49             }
    50             if(k==strlen(a))
    51                 break;
    52         }
    53         if(max1>=max2)
    54         printf("%d
    ",max1);
    55         else
    56         printf("%d
    ",max2);
    57     }
    58 }
  • 相关阅读:
    2020-11-15日报博客-一周总结
    2020-11-13日报博客-周五
    2020-11-12日报博客-周四
    2020-11-11日报博客-周三
    掌握多态概念的关键点
    使用抽象类
    不允许继承的类
    动手实验:继承条件下的构造方法调用
    继承条件下类的访问权限
    在Java中实现继承
  • 原文地址:https://www.cnblogs.com/ljmzzyk/p/6807818.html
Copyright © 2011-2022 走看看