ZZULI_SummerPractice(4) POJ 1572…
来源:互联网 发布:mac mail qq企业邮箱 编辑:程序博客网 时间:2024/04/29 19:34
Automatic Editing
Time Limit: 1000MSMemory Limit: 10000KTotal Submissions: 1040Accepted: 471
Description
Text-processing tools like awkand sed allow you to automatically perform a sequence of editingoperations based on a script. For this problem we consider thespecific case in which we want to perform a series of stringreplacements, within a single line of text, based on a fixed set ofrules. Each rule specifies the string to find, and the string toreplace it with, as shown below.
To perform the edits for a given line of text, start with the firstrule. Replace the first occurrence of the find string within thetext by the replace-by string, then try to perform the samereplacement again on the new text. Continue until the find stringno longer occurs within the text, and then move on to the nextrule. Continue until all the rules have been considered. Note that(1) when searching for a find string, you always start searching atthe beginning of the text, (2) once you have finished using a rule(because the find string no longer occurs) you never use that ruleagain, and (3) case is significant.
For example, suppose we start with the line
banana boat
and apply these rules. The sequence of transformations is shownbelow, where occurrences of a find string are underlined andreplacements are boldfaced. Note that rule 1 was used twice, thenrule 2 was used once, then rule 3 was used zero times, and thenrule 4 was used once.
Rule Find Replace-by
1.ban bab
2.baba be
3.ana any
4.ba b hind the g
To perform the edits for a given line of text, start with the firstrule. Replace the first occurrence of the find string within thetext by the replace-by string, then try to perform the samereplacement again on the new text. Continue until the find stringno longer occurs within the text, and then move on to the nextrule. Continue until all the rules have been considered. Note that(1) when searching for a find string, you always start searching atthe beginning of the text, (2) once you have finished using a rule(because the find string no longer occurs) you never use that ruleagain, and (3) case is significant.
For example, suppose we start with the line
banana boat
and apply these rules. The sequence of transformations is shownbelow, where occurrences of a find string are underlined andreplacements are boldfaced. Note that rule 1 was used twice, thenrule 2 was used once, then rule 3 was used zero times, and thenrule 4 was used once.
Before After
banana boat babana boat
babana boat bababa boat
bababa boat beba boat
beba boat behind the goat
Input
The input contains one or moretest cases, followed by a line containing only 0 (zero) thatsignals the end of the file. Each test case begins with a linecontaining the number of rules, which will be between 1 and 10.Each rule is specified by a pair of lines, where the first line isthe find string and the second line is the replace-by string.Following all the rules is a line containing the text toedit.
Output
For each test case, output aline containing the final edited text.
Both find and replace-by strings will be at most 80 characterslong. Find strings will contain at least one character, butreplace-by strings may be empty (indicated in the input file by anempty line). During the edit process the text may grow as large as255 characters, but the final output text will be less than 80characters long.
The first test case in the sample input below corresponds to theexample shown above.
Both find and replace-by strings will be at most 80 characterslong. Find strings will contain at least one character, butreplace-by strings may be empty (indicated in the input file by anempty line). During the edit process the text may grow as large as255 characters, but the final output text will be less than 80characters long.
The first test case in the sample input below corresponds to theexample shown above.
Sample Input
4banbabbababeanaanyba bhind the gbanana boat1tshtoe or top0
Sample Output
behind the goatshoe or shop
Source
Mid-Central USA 1999
题意比较好理解,就是按照“字典”里的字符串进行替换,但是要注意一点,就是替换后要从头开始扫描,不然你会WA到崩溃的。
代码:
#include<stdio.h>
#include<string.h>
char rule[15][85];
char replace[15][85];
char txt[500];
void Strrev(char s[])
{
char ss[500];
int i,j,len;
len=strlen(s);
j=0;
for(i=len-1;i>=0;i--)
ss[j++]=s[i];
ss[j]=0;
strcpy(s,ss);
}
int check(int j,int i)
{
int a,b;
a=0;b=j;
while(rule[i][a]!=0){
if(rule[i][a]==txt[b])
{
a++;b++;
}
else return 0;
}
return 1;
}
void place(int j,int i)
{
int len1,len2;
char str[500];
len2=strlen(txt);
len1=strlen(rule[i]);
txt[j]=0;
strcpy(str,txt);
strcat(str,replace[i]);
txt[j]=rule[i][0];
Strrev(txt);
txt[len2-(j+len1)]=0;
Strrev(txt);
strcat(str,txt);
strcpy(txt,str);
}
int main()
{
int n,i,j;
while(scanf("%d",&n),n)
{
getchar();
for(i=0;i<n;i++)
{
gets(rule[i]);
gets(replace[i]);
}
gets(txt);
for(i=0;i<n;i++)
{
for(j=0;txt[j];j++)
{
if(txt[j]==rule[i][0]&&check(j,i))
{ place(j,i);
j=-1;
}
}
}
puts(txt);
}
return 0;
}
- ZZULI_SummerPractice(4) POJ 1572…
- ZZULI_SummerPractice(4) POJ 3302…
- ZZULI_SummerPractice(4) POJ 1102…
- ZZULI_SummerPractice(4) POJ 2312…
- ZZULI_SummerPractice(4) POJ 132…
- ZZULI_SummerPractice(3) POJ 3984…
- ZZULI_SummerPractice(3) POJ 3598…
- ZZULI_SummerPractice(3) POJ 12…
- ZZULI_SummerPractice(3) POJ 308…
- ZZULI_SummerPractice(6) POJ 296…
- ZZULI_SummerPractice(6) POJ 202…
- ZZULI_SummerPractice(6) POJ 194…
- ZZULI_SummerPractice(6) POJ 126…
- ZZULI_SummerPractice(6) POJ 362…
- ZZULI_SummerPractice(6) POJ 270…
- ZZULI_SummerPractice(6) POJ 329…
- ZZULI_SummerPractice(3) HDU 1…
- ZZULI_SummerPractice(5) ZOJ 185…
- POJ 1047 Round and Round We Go
- android安卓点击通知栏,返回应用,而不重启应用
- 关于Dev12.2版的新产品介绍——DXTREME
- POJ 1050 To the Max
- ZZULI_SummerPractice(4) POJ 3302…
- ZZULI_SummerPractice(4) POJ 1572…
- ZZULI_SummerPractice(4) POJ 132…
- ZZULI_SummerPractice(4) POJ 1102…
- ZZULI_SummerPractice(4) POJ 2312…
- ZOJ 2851 Code Formatter
- 批处理扫盲篇
- 基于HTML5和Tomcat WebSocketServlet的聊天室简单实现
- UVA 10189 C - MINES p
- ZOJ 3432 Find the Lost Sock