uva_10115

来源:互联网 发布:怎样修改手机淘宝密码 编辑:程序博客网 时间:2024/04/27 16:12

在写input文件时出现笔误,导致总是输入错误,这点很让人头疼。。。总是有些耽误时间的地方

AC代码如下:

#include <stdio.h>#include <string.h>#include <stdlib.h>char s[11][80];char r[11][80];char bf[267];int isS(char* a, char* b, int c){    int lena = strlen(a);    int lenb = strlen(b);    int i;    i = 0;    while(a[c] == b[i] && c < lena && i < lenb){        i++;        c++;    }    if(i == lenb) return 1;    return 0;}int find(char* a, char* b){    int lena = strlen(a);    int lenb = strlen(b);    int i;    for(i = 0; i < lena; ++i){        if(a[i] == b[0])            if(isS(a, b, i)) return i;    }    return -1;}int rep(int key, int bg){    int lens, lenr, lenb;    int i, j, k;    lens = strlen(s[key]);    lenr = strlen(r[key]);    lenb = strlen(bf);    if(bg < 0) return 0;    if(lens >= lenr){        for(i = bg, j = 0; i < bg + lenr; ++i, ++j){            bf[i] = r[key][j];        }            for(i = bg + lenr; i < lenb; i++){            bf[i] = bf[i+lens-lenr];        }        bf[i] = '\0';    }    else{        k = lenr - lens;        for(i = lenb + k - 1; i >= bg; --i){            bf[i] = bf[i - k];        }        for(i = bg, j = 0; i < bg + lenr; ++i, ++j){            bf[i] = r[key][j];        }    }    return 0;}int main(){    int nu;    int i, j, k;    while(scanf("%d", &nu) && nu != 0){        memset(s, 0, sizeof(s));        memset(r, 0, sizeof(r));        memset(bf, 0, sizeof(bf));        getchar();        for(i = 0; i < nu; ++i){            gets(s[i]);            gets(r[i]);        }        gets(bf);        i = 0;        while(1){            if(i == nu) break;            j = find(bf, s[i]);            if(j != -1){                rep(i, j);            }else{                i++;            }        }        puts(bf);    }    return 0;}



0 0
原创粉丝点击