标题:寄居蟹与海葵
只看楼主
卧石听雨
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-4-10
结帖率:100%
已结贴  问题点数:20 回复次数:1 
寄居蟹与海葵
寄居蟹与海葵是一对合作互助的共栖伙伴。海葵是寄居蟹最称职的门卫。它用有毒的触角去蜇那些敢来靠近它们的所有动物,保护寄居蟹。而寄居蟹则背着行动困难的海葵,四出觅食,有福同享。
但并不是所有寄居蟹和海葵都可以做搭档的。那就要看海葵的身体是不是符合寄居蟹的螺壳。
海葵的身体是有褶皱的,而寄居蟹的螺壳同样凹凸不平,我们可以用一个大写字母组成的字符串来表示它们的高低程度,其中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 ZYXWVUT
AHBICJDKELFMGN ZYXWVUT
ABCD ZYXWVUT
HIJKLMNOPQ ZYXWVUT
0 0
样例输出:
Yes
Yes
No
No
搜索更多相关主题的帖子: 门卫 互助 动物 字符串 寄居蟹 
2016-04-17 21:06
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:20 
程序代码:
//样例输入:
//ABCDEFG ZYXWVUT
//AHBICJDKELFMGN ZYXWVUT
//ABCD ZYXWVUT
//HIJKLMNOPQ ZYXWVUT
//0 0
//样例输出:
//Yes
//Yes
//No
//No
#include<stdio.h>
#include<string.h>
void ff(char *s){
    int i=0;
    while(s[i]!='\0'){
        s[i]=(char)('Z'+'A'-s[i]);
        i++;
    }
}
bool f(char *s1,char *s2){
    ff(s2);
    if(strcmp(s1,s2)==0)
        return true;
    int i=0,j=0;
    while(s1[i]){
        if(s2[j]=='\0')
            break;
        if(s1[i]==s2[j]){
            i++;j++;
        }
        
        i++;
    }
    if(j==strlen(s2)){
        return true;
    }
    return false;
}
main(){
    char s1[]="ABCDEFG";
    char s2[]="ZYXWVUT";
    
    char s3[]="AHBICJDKELFMGN";
    char s4[]="ZYXWVUT";
    
    char s5[]="ABCD";
    char s6[]="ZYXWVUT";
    
    char s7[]="HIJKLMNOPQ";
    char s8[]="ZYXWVUT";
    printf(f(s1,s2)?"Yes":"No");
    printf("\n");
    printf(f(s3,s4)?"Yes":"No");
    printf("\n");
    printf(f(s5,s6)?"Yes":"No");
    printf("\n");
    printf(f(s7,s8)?"Yes":"No");
}

剑栈风樯各苦辛,别时冰雪到时春
2016-04-17 21:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463750-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.292438 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved