2483: DO IT YOURSELF

时间限制: 2 Sec  内存限制: 128 MB

提交: 8  解决: 3

[提交][状态][讨论版]

题目描述

有四个字符串S,T,tmp,ans,一开始给定S和T,tmp和ans为空字符串

每次可以对S串进行如下三步操作:(每次操作必须按顺序完成如下三步,按顺序完成三步称为一次操作)

第一步:选取S串的一段子串,S[L]…S[R],L<=R

第二步:将tmp串设置为S[L]…S[R],将tmp串拼接到ans串尾部

第三步:将S[0]…S[R]设置为‘*’,将tmp串设置为空字符串

问最少需要几次操作,能使得字符串ans和T相同。

输入

第一行输入一个整数T,表示有T组测试数据

每组测试数据第一行输入字符串S,第二行输入字符串T

1<=|S|,|T|<=1000

S和T串只包含小写英文字母

输出

每组测试数据输出最少操作次数,无解输出2147483647。

样例输入

3
jellydanhao
jao
jellydanhao
ll
jellydanhao
z

样例输出

2
1
2147483647

提示

来源

周甄陶

——————————————————————————————————————————

首先感谢学长的命题与指导!

思路:dp,dp[i][j]表示a串到i位置b串到j位置完全匹配的最小段数,有点类似于LCS的做法

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <cmath> using namespace std; #define LL long long
const int INF=0x3f3f3f3f; char a[1005];
char b[1005];
int dp[1005][1005]; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",a);
scanf("%s",b);
memset(dp,INF,sizeof dp);
int k1=strlen(a);
int k2=strlen(b);
for(int i=0; i<k1; i++)
if(b[0]==a[i])
while(i<k1)
dp[0][i]=1,i++; for(int i=1; i<k2; i++)
{ int mn=INF;
for(int j=i; j<k1; j++)
{
mn=min(dp[i-1][j-1],mn);
if(b[i]==a[j])
{
dp[i][j]=min(dp[i][j],mn+1);
if(b[i-1]==a[j-1])
dp[i][j]=min(dp[i-1][j-1]==INF?INF:dp[i-1][j-1],dp[i][j]);
}
else
dp[i][j]=min(dp[i][j-1],dp[i][j]);
}
}
int ans=INF; for(int i=0;i<k1;i++)
ans=min(ans,dp[k2-1][i]);
printf("%d\n",ans==INF?2147483647:ans);
}
return 0;
}

ZUFE2483 DO IT YOURSELF 2017-05-31 14:41 40人阅读 评论(0) 收藏的更多相关文章

  1. POJ2270&&Hdu1808 Halloween treats 2017-06-29 14:29 40人阅读 评论(0) 收藏

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8565   Accepted: 3111 ...

  2. Hdu1978 How many ways 2017-01-18 14:32 40人阅读 评论(0) 收藏

    How many ways Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  3. HDU1072 Nightmare(BFS) 2016-07-24 14:02 40人阅读 评论(0) 收藏

    Nightmare Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth w ...

  4. 读取Webpage表中的内容 分类: H3_NUTCH 2015-02-10 14:59 418人阅读 评论(0) 收藏

    nutch将从网页中抓取到的信息放入hbase数据库中,默认情况下表名为$crawlId_webpage,但表中的内容以16进制进行表示,直接scan或者通过Java API进行读取均只能读取到16进 ...

  5. iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  6. Lucene学习总结之四:Lucene索引过程分析 2014-06-25 14:18 884人阅读 评论(0) 收藏

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

  7. MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏

    我们知道通过Sql代理,可以实现数据库的定时备份功能:当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦: 还好,微软自带的osql工具,比较实用,通过在命令行里里输入命 ...

  8. Hdu2181 哈密顿绕行世界问题 2017-01-18 14:46 45人阅读 评论(0) 收藏

    哈密顿绕行世界问题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  9. Hadoop入门经典:WordCount 分类: A1_HADOOP 2014-08-20 14:43 2514人阅读 评论(0) 收藏

    以下程序在hadoop1.2.1上测试成功. 本例先将源代码呈现,然后详细说明执行步骤,最后对源代码及执行过程进行分析. 一.源代码 package org.jediael.hadoopdemo.wo ...

随机推荐

  1. Java图形化界面设计——GridBagConstraints

    JAVA布局模式:GridBagConstraints终极技巧参数详解 布局模式 :GridBagConstraints布局,先发一个实例: gridx = 2; // X2 gridy = 0; / ...

  2. Liunjx 文件

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件] ...

  3. sqlserver 2008 还原数据库时,提示有用户正在使用,无法取得使用占有权

    sqlserver 2008 还原数据库时,提示有用户正在使用,无法取得使用占有权 这个时候,只需要把数据库分离出去,再附加,然后还原即可 分离数据库的时候能看到有几个数据连接

  4. CH6802 車的放置

    原题链接 和棋盘覆盖(题解)差不多. 将行和列看成\(n+m\)个节点,且分属两个集合,如果某个节点没有被禁止,则行坐标对应节点向列坐标对应节点连边,然后就是求二分图最大匹配了. #include&l ...

  5. UISwitch开关控件属性介绍以及获取开关状态并做出响应

    (1)UISwitch的大小也是固定的,不随我们frame设置的大小改变:也是裁剪成圆角的,设置背景就露马脚发现背景是矩形. (2)UISwitch的背景图片设置无效,即我们只能设置颜色,不能用图片当 ...

  6. 20172306《Java程序设计》第四周学习总结

    20172306 <Java程序设计>第四周学习总结 教材学习内容总结 第四章: 1. 类和对象的回顾:除了看书,我还上网找了一下两者的一些区别. 2. 编写类时,了解到初始化.形式参数. ...

  7. 20172325 2017-2018-2 《Java程序设计》第十一周学习总结

    20172325 2017-2018-2 <Java程序设计>第十一周学习总结 教材学习内容总结 Android简介 Android操作系统是一种多用户的Linux系统,每个应用程序作为单 ...

  8. ASCII码表以及不同进制间的O(1)转换

    ASCII码表以及不同进制间的O(1)转换          一.ASCII码表 ASCII全称为American Standard Code for Information Interchange, ...

  9. 团队-Python 爬取豆瓣电影top250-成员简介及分工

    姓名:周鑫 班级:软件6班 团队名称:咣咣踹电脑 擅长:Python,java 分工:编写数据库

  10. Java语法基础课 动手动脑

    1.枚举类型 它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象. 枚举类型不是java原有数据类型 2.为什么double类型的数值进行运算得不到“数学上精确”的结果? 我们给出的数值,在 ...