【HDU 1501】Zipper(记忆化搜索)
传送门
我们记录pos1 pos2 pos3 分别代表现在字符串1,2,3的位置
然后判断pos1是否等于pos3 或者pos2是否等于pos3 分别进行dfs
然后我们发现是可以记忆化的
比方当pos1=pos3且pos2=pos3 那会先搜索pos1+1 那么在这一次的dfs 有可能就提前处理出之后会选择的方式 那么当回溯之后 就会再去走这样的方式 浪费了很多时间
所以只需标记一下vis[pos1][pos2] 之后走到这儿就直接return
#include<bits/stdc++.h>
#define N 1005
using namespace std;
int n,len1,len2,len3;
string s1,s2,s3;
bool ans,vis[N][N];
void dfs(int pos1,int pos2,int pos3) //在字符串1 2 3 中的位置
{if(pos1==len1&&pos2==len2) //已经超出了 {ans=true;return;}if(s1[pos1]!=s3[pos3]&&s2[pos2]!=s3[pos3]) return;if(vis[pos1][pos2]) return; //中途截断 vis[pos1][pos2]=true; if(s1[pos1]==s3[pos3]) dfs(pos1+1,pos2,pos3+1);if(s2[pos2]==s3[pos3]) dfs(pos1,pos2+1,pos3+1);
}
int main()
{ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);cin>>n;for(int i=1;i<=n;i++){cin>>s1>>s2>>s3;memset(vis,false,sizeof(vis));ans=false;len1=s1.length(); len2=s2.length(); len3=s3.length();dfs(0,0,0);if(ans) cout<<"Data set "<<i<<": yes"<<endl;else cout<<"Data set "<<i<<": no"<<endl;}return 0;
}
转载于:https://www.cnblogs.com/Patrickpwq/articles/9810405.html
【HDU 1501】Zipper(记忆化搜索)相关推荐
- HDU 漫步校园 (记忆化搜索)
漫步校园 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- hdu 1078(记忆化搜索)
题意: 老鼠每次最多走k步停下来,停下的这个位置只能比上一个停留的位置大,并获取其价值,每次只能水平或垂直走,问最大能得到的价值 解题思路:这道题可以用记忆化搜索解决,dp[i][j]表示老鼠在位置( ...
- How many ways HDU - 1978(记忆化搜索关于求多少种方式模板)
题目: 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量. 2.机器人只能向右或 ...
- FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)
题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...
- POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- hdu 4722(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...
- hdu 4597 Play Game(记忆化搜索)
题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...
- hdu 1142 记忆化搜索
题目是这样的,貌似一开始我这个英语搓的人还理解错了...orz http://acm.hdu.edu.cn/showproblem.php?pid=1142 就是最短路,只不过用dijkstra是从终 ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 2452 Navy maneuvers (记忆化搜索)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2452 题意:给出一个图,n个点,m条边,保证无环,每个点有一个权值.指定一个点作为起点,Victory和G ...
最新文章
- Objective-c的@property 详解
- ImportError: cannot import name ‘secure_filename‘的解决办法
- 突发!美国最大输油管道遭网络攻击关闭!美媒:为其基础设施的脆弱堪忧
- OpenGL绘制二个不同颜色的三角形的实例
- 查看当前提供了哪些引擎
- 延长汽车寿命的6个良好习惯
- fastJson toJSONString注意点
- SVG-不是图片的图片
- LwIP应用开发笔记之一:LwIP无操作系统基本移植
- js简单判断身份证合法性以及身份证生日合法性
- Excel中根据单元格背景色求和
- 【逐云】阿里“水电煤”背后的人物故事
- tomcat7解压版安装过程
- SQL 当天在当月、当季度、当年的时间进度
- pacman 查询_ArchLinux的包管理系统: pacman
- H5开发使用 “navigationStyle“: “custom“,但是最外层的title标题显示不正确
- 用java在画布中绘制六个随机英文字母
- 什么是软考?计算机专业有没有必要考?
- VS:如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题
- 关于Qt上位机与下位机stm32数据传输的解析问题(一)