hdu1501 动态规划
这题有两种解题思路,一个是记忆化搜索,一个是dp。
分别贴代码:
记忆化搜索:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<cstring>
char str[],a[],b[];
int sum,flag;
int hash[][];
void dfs(int i,int j,int k)
{
if(flag)
return ;
if(k==sum)
{
flag=;
return ;
}
if(hash[i][j])
return ;
hash[i][j]=;
if(a[i]==str[k])
dfs(i+,j,k+);
if(b[j]==str[k])
dfs(i,j+,k+);
}
int main()
{
int i,j,t,Case=;
scanf("%d",&t);
while(t--)
{
scanf("%s %s %s",&a,&b,&str);
sum=strlen(str);
flag=;
memset(hash,,sizeof(hash));
dfs(,,);
if(flag)
printf("Data set %d: yes\n",Case++);
else
printf("Data set %d: no\n",Case++);
}
return ;
}
dp:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[][];
int main()
{
int i,j,l1,l2,sum,t,Case=;
char a[],b[],str[];
scanf("%d",&t);
while(t--)
{
scanf("%s%s%s",&a,&b,&str);
l1=strlen(a);
l2=strlen(b);
memset(dp,,sizeof(dp));
dp[][]=;
for(i=;i<=l1;i++)
for(j=;j<=l2;j++)
{
if(i>&&a[i-]==str[i+j-]&&dp[i-][j])
dp[i][j]=;
if(j>&&b[j-]==str[i+j-]&&dp[i][j-])
dp[i][j]=;
}
if(dp[l1][l2])
printf("Data set %d: yes\n",Case++);
else
printf("Data set %d: no\n",Case++);
}
return ;
}
hdu1501 动态规划的更多相关文章
- 增强学习(三)----- MDP的动态规划解法
上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...
- 简单动态规划-LeetCode198
题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...
- 动态规划 Dynamic Programming
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...
- 动态规划之最长公共子序列(LCS)
转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...
- C#动态规划查找两个字符串最大子串
//动态规划查找两个字符串最大子串 public static string lcs(string word1, string word2) { ...
- C#递归、动态规划计算斐波那契数列
//递归 public static long recurFib(int num) { if (num < 2) ...
- 动态规划求最长公共子序列(Longest Common Subsequence, LCS)
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划
[BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...
- POJ 1163 The Triangle(简单动态规划)
http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
随机推荐
- vector 之 find 重载
众所周知,map有find,但vector的find只能调用algorithm中的find通用方法. 参考<How to find an item in a std::vector?> 对 ...
- HDU 5842 Lweb and String (水题)
Lweb and String 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5842 Description Lweb has a string S ...
- Linux 获取文件时间信息 判断文件是否存在
获取文件时间戳 (1)查看全部信息: stat e4.txt 范例: [root@localhost ~]# stat e4.txt File: “e4.txt” Size: 0 Blocks: ...
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档.
- 学习LINQ,发现一个好的工具。LINQPad!!
今日学习LINQ,发现一个好的工具.LINQPad!! 此工具的好处在于,不需要在程序内执行,直接只用工具测试.然后代码通过即可,速度快,简洁方便. 可以生成其LINQ查询对应的lambda和SQL语 ...
- PostgreSQL的 initdb 源代码分析之二十三
继续分析: vacuum_db(); 展开: cmd是:/home/pgsql/project/bin/postgres" --single -F -O -c search_path=pg_ ...
- 【转】2013年中国IT业10大公司
转自:http://www.chinaz.com/news/2013/1217/331446.shtml?zyy 1.最得志的公司:小米 在2013年,再没有一家公司像小米这样志得意满,即便看看所有的 ...
- 内容输出Linux文件系统的的实现:创建一个文件的过程
题记:写这篇博客要主是加深自己对内容输出的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 考虑上面这个命令: who > userlist 当这个命令完成后,文件系统增加l一 ...
- 【转】C++ static关键字
原文:http://blog.csdn.net/hackbuteer1/article/details/7487694 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设 ...
- SAP CRM 最新简介文字(2007年、中英文)
以下内容是SAP CRM功能的精简描述,摘自SAP官方文档,附上中英文版本,可以对SAP CRM的主要功能有大致了解. 营销 - 使用营销资源管理.客户细分及列表管理.营销活动管理.线索管理.贸易促销 ...