poj 1035 串

来源:互联网 发布:ubuntu安装hadoop2.6 编辑:程序博客网 时间:2024/05/01 09:27

直接来代码

#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char dir[10005][20];int num[56][10005];int rr[56];char word[56][20];int dirnum=0;int wordnum=0;bool re(char *a,char *b){    int dif=0;    while(*a)    {        if(*(a++)!=*(b++))        {            dif++;            if(dif>1)                return false;        }    }    return true;}bool del(char *a,char *b){    int dif=0;    while(*a)    {        if(*a!=*b)        {            a++;            dif++;            if(dif>1)                return false;        }        else        {            a++;            b++;        }    }    return true;}bool inser(char *a,char *b){    int dif=0;    while(*b)    {        if(*a!=*b)        {            b++;            dif++;            if(dif>1)                return false;        }        else        {            a++;            b++;        }    }    return true;}int main(){    memset(rr,0,sizeof(rr));    int i=0;    while(gets(dir[i]))    {        //printf("%s\n",dir[i]);        if(dir[i][0]=='#')            break;        dirnum=i;        i++;    }    i=0;    while(gets(word[i]))    {        if(word[i][0]=='#')            break;        wordnum=i;        i++;    }    memset(rr,0,sizeof(rr));    for(int i=0; i<=wordnum; i++)    {        for(int j=0; j<=dirnum; j++)        {            int l1=strlen(word[i]);            int l2=strlen(dir[j]);            if(abs(l1-l2)<=1)            {                if(l1==l2)                {                    if(strcmp(word[i],dir[j])==0)                    {                        rr[i]=-1;                        break;                    }                    else  if(re(word[i],dir[j]))                    {                        num[i][rr[i]++]=j;                    }                }                if(l1==l2-1)                    if(inser(word[i],dir[j]))                    {                        num[i][rr[i]++]=j;                    }                if(l1==l2+1)                    if(del(word[i],dir[j]))                    {                        num[i][rr[i]++]=j;                    }            }        }    }    for(int i=0; i<=wordnum; i++)    {        if(rr[i]==-1)        {            printf("%s is correct\n",word[i]);        }        else        {            printf("%s:",word[i]);            for(int j=0; j<rr[i]; j++)            {                if(j<rr[i])                    printf(" ");                int t=num[i][j];                printf("%s",dir[t]);            }            printf("\n");        }    }}


 

0 0
原创粉丝点击