poj 1572
一道字符串替换的题目。
题意:给你2*n组字符串,一个是规则,一个是替换的结果。
字符串的题目,确实麻烦,有些细节不处理好就是wa。
这里我提供1组数据
intput
1
abcdef
a
abcdef
1
ab
ababab
output
a
<empty line>
#include <stdio.h>
#include <string.h>
#include <iostream> using namespace std; int next[100][300];
char rule[100][100],rep[100][300],ans[300],tmp[300]; void makenext(int i) //kmp求next数组。
{
int q,k;
int m = strlen(rule[i]);
next[i][0] = 0;
for (q = 1,k = 0; q < m; ++q)
{
while(k > 0 && rule[i][q] != rule[i][k])
k = next[i][k-1];
if (rule[i][q] == rule[i][k])
{
k++;
}
next[i][q] = k;
}
} void clea()
{
memset(rule,0,sizeof(rule[0]));
memset(rep,0,sizeof(rep[0]));
memset(next,0,sizeof(next[0]));
memset(tmp,0,sizeof(tmp));
memset(ans,0,sizeof(ans));
} int main()
{
int n;
while(scanf("%d",&n),n!=0)
{
clea();
getchar();
for(int i=0;i<n;i++)
{
gets(rule[i]);
gets(rep[i]);
makenext(i);
}
gets(ans);
for(int i=0;i<n;i++)
{
int len=strlen(ans),len2=strlen(rep[i]),len3=strlen(rule[i]),j=0,q=0;
for(j=0;j<len;j++)
{
while(q>0&&ans[j]!=rule[i][q])
q=next[i][q-1];
if(ans[j]==rule[i][q])
q++;
if(len3==q)
{
memset(tmp,0,sizeof(tmp));
for(int m=0;m<=len-len3+len2;m++) //替换。这里处理相对麻烦,尤其是等号的问题。
{
if(m<=j-q) tmp[m]=ans[m];
else if(m<=j-q+len2){
for(int p=0;p<len2;p++,m++)
tmp[m]=rep[i][p];
m--;}
else tmp[m]=ans[++j];
}
strcpy(ans,tmp);
j=-1;
q=0;
len=strlen(ans);
}
}
}
printf("%s\n",ans);
}
return 0;
}
poj 1572的更多相关文章
- POJ 1572 Automatic Editing 字符串替换,replace就够了
题意不难理解,但是一开始还是没有看清楚题目.Replace the first occurrence of the find string within the text by the replace ...
- POJ题目排序的Java程序
POJ 排序的思想就是根据选取范围的题目的totalSubmittedNumber和totalAcceptedNumber计算一个avgAcceptRate. 每一道题都有一个value,value ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- POJ题目分类(转)
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
随机推荐
- jQuery checkbox 所有 全选、全不选、是否选中等
下面是网络收集: jquery判断checked的三种方法:.attr('checked): //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或fals ...
- MySQL主从数据库同步延迟问题解决(转)
最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...
- iOS-设置UIPageControl 显示图片
UIPageControl 的默认样式是几个小圆点,系统没有提供属性供我们自定义这几个小圆点的样式,不过我们依然可以使用KVC来自定义PageControl的显示样式 UIPageControl *p ...
- UML类图之类与类的关系
类与类之间的关系是在需求分析阶段确定的. 类与类之间的关系.有一般化关系.关联关系.聚合关系.合成关系和依赖关系. 1.一般化关系表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关 ...
- Object&&String学习
Object类 列表项 String类 常用方法 构造方法 public String() public String(byte[] bytes) public String(byte[]bytes, ...
- [译]在Mac上运行ASP.NET 5
原文:http://stephenwalther.com/archive/2015/02/03/asp-net-5-and-angularjs-part-7-running-on-a-mac 这篇文章 ...
- VTK初学一,a_Vertex图形点的绘制
系统:Win8.1 QT版本:2.4.2,Mingw VTK版本:6.3 2. main.cpp #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #incl ...
- INSTALL_FAILED_INSUFFICIENT_STORAGE(转发)
[2012-06-19 14:06:47 - Icontacts] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE[2012-06-19 ...
- javascript string 函数集
JavaScript_String对象说明 string中文为"字符串"的意思,String继承自Object对象,此对象提供字符串的查找操作等函数 JavaScript字符串类型 ...
- HDOJ 2929 Bigger is Better
DP....好难的DP... Bigger is Better Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...