OJ刷题之《寄居蟹与海葵》

来源:互联网 发布:js取消选中事件 编辑:程序博客网 时间:2024/04/29 19:18

题目描述

寄居蟹与海葵是一对合作互助的共栖伙伴。海葵是寄居蟹最称职的门卫。它用有毒的触角去蜇那些敢来靠近它们的所有动物,保护寄居蟹。而寄居蟹则背着行动困难的海葵,四出觅食,有福同享。 
但并不是所有寄居蟹和海葵都可以做搭档的。那就要看海葵的身体是不是符合寄居蟹的螺壳。 
海葵的身体是有褶皱的,而寄居蟹的螺壳同样凹凸不平,我们可以用一个大写字母组成的字符串来表示它们的高低程度,其中A代表0,B代表1,依次类推。我们称两者相加等于25的就算是吻合,比如A和Z相吻合,B与Y吻合,依次类推。 
只要海葵身体的部分序列与寄居蟹外壳的序列相吻合,就称他们可以一起生活。 
比如: 
1.海葵的褶皱是"ABCDEFG",寄居蟹是"ZYXWVUT"。这样,它们就可以完全吻合了。 
2.海葵的褶皱是"AHBICJDKELFMGN",寄居蟹是"ZYXWVUT"。这样,寄居蟹可以和海葵的部分序列"ABCDEFG"相吻合 (注意:部分序列不改变字符原来的先后顺序,比如"ACB"就不是它的部分序列)。 
3.海葵的褶皱是"ABCD",寄居蟹是"ZYXWVUT"。这样,虽然海葵可以和寄居蟹前面一段完全吻合,但它比寄居蟹要小,不能完全保护寄居蟹的安全,所有它们是不适合的。 
4.海葵的褶皱是"HIJKLMNOPQ",寄居蟹是"ZYXWVUT"。这样,它们就可以完全不吻合了。 
现给你两段字符串S1、S2,分别代表海葵和寄居蟹的外壳,为了它们以后各都能快乐地生活,请你帮忙计算一下它们是不是吻合的。

输入

输入包括多组测试数据。 每组测试数据包括两个字符串H、J,分别代表海葵的外壳和寄居蟹的外壳。可以保证它们的长度都小于100000。 输入以0 0结束。

输出

如果寄居蟹和海葵的外壳能吻合,就输出"Yes",否则输出"No"。

样例输入

ABCDEFG ZYXWVUTAHBICJDKELFMGN ZYXWVUTABCD ZYXWVUTHIJKLMNOPQ ZYXWVUT0 0

样例输出

YesYesNoNo

提示


代码如下:

#include <iostream>#include <cstring>using namespace std;int main(){    int i,j,Lena,Lenb;    char a[100000],b[100000];    while (cin>>a>>b)    {        Lena=strlen(a);        Lenb=strlen(b);        if (a[0]!=0&&b[0]!=0&&Lena==1&&Lenb==1)            break;        else if (Lena>=Lenb)        {            for (i=0,j=0;i<Lena;i++)            {                if (a[i]+b[j]==155)                {                    j++;                }            }            if (j==Lenb)                cout<<"Yes"<<endl;            else                cout<<"No"<<endl;        }        else        {            cout<<"No"<<endl;        }    }    return 0;}


运行结果:





怒错5次,,,不知道为何,感觉自己越来越乏力了。


1 0
原创粉丝点击