密码截获

来源:互联网 发布:天下妈祖软件 编辑:程序博客网 时间:2024/05/17 01:25

实际上求的是最长回文数,what I have done is that 分开奇偶来匹配,枚举中间点,如果是下一个字符与前一个字符相等,就执行偶数的匹配,奇数的必须执行,因为存在baaab的情况,再找出最大的那个..That'sall!  >_<!!!!

 


Time Limit:1000MS  Memory Limit:1024K

Description:

Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?

Input:

测试数据有若干行字符串,包括字母,数字,符号。(字母区分大小写)

Output:

与输入相对应每一行输出一个整数,代表最长有效密码串的长度。

Sample Input:

ABBA 
12ABBA 
ABAKK 
51233214 
abaaab

Sample Output:

5


#include<stdio.h>
#include<string.h>

int work(int m,char a)
{
    int i,j,k1=0,k2;
    if(a[m] == a[m+1])
    {
        m+2;
        m-1;
        while(i>=0 && a[j]!='\0'&&a[i] == a[j])
        {
            i--;
            j++;
        }
        k1 j-i-1;
    }
    m-1;
    m+1;
    k2 0;
    while(i>=0 && a[j]!='\0'&&a[i] == a[j])
    {
        i--;
        j++;
    }
    k2 j-i-1;
    if(k2 == 0 &&k1 == 0 //如果k1,k2为0,说明不存在回文,长度为1
        return 1;
    return k1>k2?k1:k2;
}

int main(void)
{
    char a[300];
    int i,max,num;
    while(gets(a))
    {
        max num 0;
        for(i=0;a[i]!='\0';i++)
        {
            num work(i,a);
            if(num>max)
                max num;
        }
        printf("%d\n",max);
        memset(a,0,sizeof(a));
    }
    return 0;
}


改进后的代码:

#include<stdio.h>
#include<string.h>

int main(void)
{
    char a[300];
    int i,j,max,num,m;
    while(gets(a))
    {
        max num 0;
        strlen(a);
        for(i=0;i<m;i++)
        {
            for(j=0;i-j>=0 && i+j<m;j++)         //对奇数的处理
            {
                if(a[i-j]!=a[i+j])  break;
                if(2*j+1>max) max 2*j+1;
            }
            for(j=0;i-j>=0 && i+j+1<m;j++)   //对偶数的处理
            {
                if(a[i-j]!=a[i+j+1])  break;
                if(2*j+2>max) max 2*j+2;
            }
        }
        printf("%d\n",max);
        memset(a,0,sizeof(a));
    }
    return 0;
}

转自http://blog.sina.com.cn/s/blog_821ba53201010cqb.html
0 0
原创粉丝点击