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
- uva_10115
- uva_10115-Automatic Editing
- UVa_10115 - Automatic Editing(POJ 1572)
- UVA_10115 - Automatic Editing之replace的用法
- 四川首张不动产登记证出炉 证书编号001(图)
- 小憩后即将来临的疯狂
- 计算字符串中单词数量
- CocoaPods安装和使用教程
- JTAG 之前OK,但是现在找不到并口,或出现并口但是烧不进的话,试试这个:
- uva_10115
- C++的构造函数浅析
- Entity Framework 基本用法
- windows7 环境安装PHP Apache MySQL
- chtml标签之保存为文件
- 对象的强、软、弱和虚引用
- IOS SDK详解之NSDictionary
- Spring管理Filter和Servlet
- windows7安装drupal7环境