POJ 1035

来源:互联网 发布:网络舆情信息 编辑:程序博客网 时间:2024/05/01 19:11

注意:不要用string, 否则超时超的怀疑人生,当时还以为是cin>>的问题后来发现是string导致的,血一样的教训,不要因为方便用stirng!!

#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <vector>using namespace std;char s[10010][70];char exist[10010][70];bool cmp1(char *ss1, char * ss2){    int sum = 0;    int len = strlen(ss1);    for(int i = 0; i < len; i++)    {        if(ss1[i] != ss2[i])            sum++;        if(sum > 1)        return 0;    }    return 1;}bool cmp2(char *ss1, char *ss2){    int l1 = 0, l2 = 0;    int sum = 0;    int len =strlen(ss2);    while(l2 < len)    {        if(ss1[l1] != ss2[l2])        {            sum++;            l2++;        }        else            l1++, l2++;        if(sum > 1)        return 0;    }    return 1;}int main(){    char ss[70];    int sum = 0;    while(scanf("%s", s[sum]))    {        if(s[sum][0] == '#')        {            break;        }        sum++;    }    while(scanf("%s", ss) != EOF)    {        if(ss[0] == '#')            break;        bool correct = 0;        bool impossbile = 0;        int len = 0;        for(int i = 0; i < sum; i++)        {            if(strcmp(ss,s[i]) == 0)            {                correct = 1;                break;            }            else if(strlen(ss) == strlen(s[i]))            {                if(cmp1(ss, s[i]))                {                    impossbile = 1;                    strcpy(exist[len++], s[i]);                }            }            else if(strlen(ss) == strlen(s[i]) - 1)            {                if(cmp2(ss, s[i]))                {                    impossbile = 1;                    strcpy(exist[len++], s[i]);                }            }            else if(strlen(ss) == strlen(s[i]) + 1)            {                if(cmp2(s[i], ss))                {                    impossbile = 1;                    strcpy(exist[len++], s[i]);                }        }        }        if(correct == 1)        {            cout << ss << " is correct" << endl;        } else if(impossbile == 1)        {            cout << ss << ":";            for(int i = 0; i < len; i++)            {                cout << " " << exist[i];            }            cout << endl;        } else {            cout << ss << ":" << endl;        }}return 0;}

0 0