Naeioi

量子の風
随笔 - 8, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

UVa 10115

原题在这里.小心指针!!!
#include <cstdio>
#include <string.h>
using namespace std;

const int maxn=15,maxl=300;
char key[2][maxn][maxl],str[maxl];
int l[maxn],N;

bool match(char *s,char *k)
{
    while (*k)
    {
        if (*s!=*k)
            return false;
        ++s;
        ++k;
    }
    return true;
}

void replace(int cur,int i)
{
    char tmp[maxl]= {0};
    memcpy(tmp,str,cur);
    strcat(tmp,key[1][i]);
    strcat(tmp,str+cur+l[i]);
    memcpy(str,tmp,sizeof(str));
}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("10115.in","r",stdin);
    freopen("10115.out","w",stdout);
#endif

    while (scanf("%d",&N)&&N!=0)
    {
        memset(str,0,sizeof(str));
        getchar();
        for (int i=0; i<N; i++)
        {
            gets(key[0][i]);
            gets(key[1][i]);
            l[i]=strlen(key[0][i]);
        }
        gets(str);
        for (int i=0; i<N; i++)
            for (int j=0; str[j+l[i]-1]; j++)
                if (match(str+j,key[0][i]))
                {
                    replace(j,i);
                    j=0;
                }
        puts(str);
    }

    fclose(stdin);
    fclose(stdout);
    return 0;
}

posted on 2010-11-12 21:46 Naeioi Zhu 阅读(268) 评论(0)  编辑 收藏 引用 所属分类: 题库题解


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理