HDU 6170 Two strings (dp)
/**
* 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170
* 字符串match, ‘.’代表匹配任意一个字符,“*” 代表前面的那个字符可以重复
* 出现0到无穷次。
*
* 思路: dp[i][j];代表前i个字符与另一个前j个字符是否能匹配? true:false;
* 假设i是B串,j是A串
* 如果是:不是*,那就直接判断相等或者其中一个是否为点。是进行转移 dp[i][j]=dp[i-1][j-1];
* 如果是*,我们需要从dp[i-1][j] dp[i-2] 转过来,
* 如果 A串的当前字符与之前一样,那么还可以从 dp[i-1][j-1],dp[i][j-1]转过来。
*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2600;
char a[maxn], b[maxn];
bool dp[maxn][maxn];
int lena, lenb;
int main()
{
int T;
scanf("%d%*c", &T);
while (T--)
{
memset(dp, 0, sizeof(dp));
a[0] = b[0] = 1;
scanf("%s%s",a+1,b+1);
lena = strlen(a+1);
lenb = strlen(b+1);
dp[0][0] = true;
for (int i = 1; i <= lenb; i++)
{
for (int j = 0; j <= lena; j++)
{
if (b[i] == '.' || a[j] == b[i])
dp[i][j] |= dp[i - 1][j - 1];
else if (b[i] == '*')
{
dp[i][j] |= dp[i - 2][j];
dp[i][j]|=dp[i - 1][j];
if (a[j - 1] == a[j])
{
dp[i][j]|=dp[i-1][j-1];
dp[i][j]|=dp[i][j-1];
}
}
}
}
puts(dp[lenb][lena] ? "yes" : "no");
}
return 0;
}
HDU 6170 Two strings (dp)的更多相关文章
- 2017ACM暑期多校联合训练 - Team 9 1010 HDU 6170 Two strings (dp)
题目链接 Problem Description Giving two strings and you should judge if they are matched. The first stri ...
- HDU 5791:Two(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description Alice gets two sequences A ...
- HDU 4833 Best Financing(DP)(2014年百度之星程序设计大赛 - 初赛(第二轮))
Problem Description 小A想通过合理投资银行理财产品达到收益最大化.已知小A在未来一段时间中的收入情况,描述为两个长度为n的整数数组dates和earnings,表示在第dates[ ...
- HDU 6170----Two strings(DP)
题目链接 Problem Description Giving two strings and you should judge if they are matched.The first strin ...
- hdu 4055 Number String(dp)
Problem Description The signature of a permutation is a string that is computed as follows: for each ...
- HDU 4833 Best Financing (DP)
Best Financing Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 1422 重温世界杯(DP)
点我看题目 题意 : 中文题不详述. 思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费减花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可 ...
- HDU 1176 免费馅饼(DP)
点我看题目 题意 : 中文题.在直线上接馅饼,能接的最多是多少. 思路 :这个题其实以前做过.....你将这个接馅饼看成一个矩阵,也不能说是一个矩阵,反正就是一个行列俱全的形状,然后秒当行,坐标当列, ...
- Codeforces 543C Remembering Strings(DP)
题意比较麻烦 见题目链接 Solution: 非常值得注意的一点是题目给出的范围只有20,而众所周知字母表里有26个字母.于是显然对一个字母进行变换后是不影响到其它字符串的. 20的范围恰好又是常见状 ...
随机推荐
- JAVA学习第十四课(接口:implements及其基本应用)
接口: 我们知道抽象类中能够定义抽象方法,也能够定义非抽象方法.当一个抽象类中的方法都是抽象方法的时候,我们就能够定义还有一种表现方式:接口(interface),所以接口是一种特殊的抽象类 接口的出 ...
- GroupBox与Panel控件
1.GroupBox控件常常用于逻辑地组合一组控件,如RadioButton 及 CheckBox控件,显示一个框架,其上有一个标题. 2.Panel 可以包含多个控件,以便将这些控件编为一组,以便方 ...
- (四)DOM对象和jQuery对象
学习jQuery,需要搞清楚DOM对象和jQuery对象的关系与区别,因为两者的方法并不共用,如果搞不清楚对象类型就会导致调用错误的方法. DOM(Document Object Model)称为文档 ...
- RobotFramework-Selenium2Library--关键字
Selenium2Library用户关键字 *** Settings *** Library Selenium2Library *** Keywords *** Checkbox应该不被选择 [Arg ...
- zoj 2949 - Coins of Luck
题目:有2中面条各n碗.每次抛硬币推断吃哪一种(到一种吃完为止).问抛硬币的数学期望. 分析:动态规划.概率dp.求出每种结束状态(即,有一种吃完)的概率,分别乘以步长即为期望. 大黄解法:状态位剩余 ...
- 一步一步实现一个简单的OS(简单的让boot载入setup)
这次直接写用boot载入setup模块. 文件系统就先不弄了,以后再说, 咱先整个转简单的载入器. 我把软盘引导改成硬盘了,由于硬盘的读扇区函数简单一些. 这里没有做硬盘的mbr区,我认为在如今我的这 ...
- 对Oracle的rownum生成时机的理解
在Oracle中,rownum和rowid是平时经常用到的.比如rownum经常用于分页查询,rowid用于排重或者快速定位到记录. 对rownum跟order by配合下的生成时机一直没有具体研究过 ...
- spark on yarn 配置history server
spark在yarn模式下配置history server 1.建立hdfs文件– hadoop fs -mkdir /user/spark– hadoop fs -mkdir /user/spark ...
- PowerBuilder -- 数据窗口
获取数据窗口列数 ls_colnum= integer(this.Describe("DataWindow.Column.Count")) 获取数据窗口列名 ls_colName ...
- mongo-connector导入数据到Es
要求 基于mongo-connector同步数据,必须要求mongodb为复制集架构,原因是此插件是基于oplog操作记录进行数据同步的:而oplog可以说是Mongodb Replication的纽 ...