UVa:10115 - Automatic Editing
2014-04-26 09:41
323 查看
此题又有字符匹配匹配的问题,又想到了用string类里的find函数,想想还是用“暴力”解决吧,锻炼一下自己的能力,轻松AC了。
AC代码如下:
--------------------------------------------------------------------------------------------
Keep It Simple,Stupid!
--------------------------------------------------------------------------------------------
AC代码如下:
#include<stdio.h> #include<string.h> char sfind[20][100],srep[20][100],text[500]; int main() { int n; while(scanf("%d",&n)!=EOF){ getchar(); if(!n) break; for(int i=0;i<n;i++){ gets(sfind[i]); gets(srep[i]); } gets(text); for(int i=0;i<n;i++){ int lef=strlen(sfind[i]),ler=strlen(srep[i]),lex=strlen(text); int mb=lef>ler?lef-ler:ler-lef; for(int j=0;j<lex;j++){ int p=1; for(int k=j,x=0;x<lef;k++,x++){ if(sfind[i][x]!=text[k]){ p=0; break; } } if(p){ if(ler>=lef){ for(int k=lex;k>=j+lef;k--) text[k+mb]=text[k]; for(int k=j,x=0;x<ler;k++,x++) text[k]=srep[i][x]; } else{ for(int k=j+lef;k<=lex;k++) text[k-mb]=text[k]; for(int k=j,x=0;x<ler;k++,x++) text[k]=srep[i][x]; } j=-1; lex=strlen(text);//注意:替换后需重新计算text的长度 } } } printf("%s\n",text); memset(text,0,sizeof(text));//注意:每个Case结束后需将text数组清零,不然下一个Case里的text会保留有上一个Case里的text的一些字符(长度不等时) } return 0; }
--------------------------------------------------------------------------------------------
Keep It Simple,Stupid!
--------------------------------------------------------------------------------------------
相关文章推荐
- UVA 10115 - Automatic Editing(字符串替换问题)
- UVa 10115 - Automatic Editing
- UVa-10115-Automatic Editing
- UVA 10115
- UVa 10115 - Automatic Editing解题报告
- uva 10115 Automatic Editing
- UVA10115 - Automatic Editing
- UVA 10115 Automatic Editing
- UVa - 10115 - Automatic Editing
- UVa-10115-Automatic Editing
- UVA-10115 Automatic Editing
- UVA 10115
- uva10115
- uva 10115(字符串)
- UVA - 10115 Automatic Editing
- UVA - 10115 Automatic Editing
- UVA 10115 子符串替换
- uva-10115 - Automatic Editing
- UVa 10115 Automatic Editing (字符串中间替换技巧)
- UVA 10115(字符串)