在写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;
}