POJ 2192 【DP】
题意:
给三个字符串,判断前两个在相对顺序不变的情况下是否可以组成第三个字符串。
思路:
先说屌丝:
dp[i][j]代表1串的前i个和2串的前j个字符在3串的前i+j个字符中最多能够组合出几个字符。
然后状态转移是:
如果stra[i]==strc[i+j]则,dp[i][j]=max(dp[i][j],dp[i-1][j]+1)
同样的若strb[i]==strc[i+j]则,dp[i][j]=max(dp[i][j],dp[i][j-1]+1)
最后判断dp[lena][lenb]是否等于lena+lenb
再说大神思路:
大神直接把dp定义成bool型,初始化dp[0][0]=1;
然后dp[i]][j]=dp[i-1][j]&&tmpa[i]==tmpc[i+j]||dp[i][j-1]&&tmpb[j]==tmpc[i+j]
屌丝代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[][];
int main()
{
int t;
scanf("%d",&t);
char tmpa[],tmpb[],tmpc[];
for(int tt=; tt<=t; tt++)
{
memset(dp,,sizeof(dp));
scanf("%s%s%s",tmpa+,tmpb+,tmpc+);
int lena=strlen(tmpa+);
int lenb=strlen(tmpb+);
int lenc=strlen(tmpc+);
if(lena+lenb!=lenc)
{
printf("Data set %d: no\n",tt);
}
else
{
for(int i=; i<=lena; i++)
{
for(int j=; j<=lenb; j++)
{
if(i!=)
{
if(tmpa[i]==tmpc[i+j])
{
dp[i][j]=dp[i-][j]+;
}
else
{
dp[i][j]=dp[i-][j];
}
}
if(j!=)
{
if(tmpb[j]==tmpc[i+j])
{
dp[i][j]=max(dp[i][j],dp[i][j-]+);
}
else
{
dp[i][j]=max(dp[i][j],dp[i][j-]);
}
}
}
}
/*for(int i=0;i<=lena;i++)
{
for(int j=0;j<=lenb;j++)
{
printf("%d ",dp[i][j]);
}
puts("");
}*/
if(dp[lena][lenb]==lenc)
{
printf("Data set %d: yes\n",tt);
}
else
{
printf("Data set %d: no\n",tt);
}
}
}
}
POJ 2192 【DP】的更多相关文章
- POJ 3230 【DP】
题意: 某货旅行,在n个城市呆m天. 给出从第i个城市到第j个城市的路费,或者留在某个城市的生活费. 给出在第i天在第j个城市的收益. 可以在城市之间任意穿梭逗留没有其他特殊要求. 求收益最大是多少. ...
- POJ 2346 【DP】
题意: 给一个正的不大于10的偶数n,求n个数字组成的数字串前n/2位和后n/2位的和相等的个数. 思路: dp[i][j]由i位数组成的和为j的数字串的个数. dp[i][j]+=dp[i-1][j ...
- Kattis - honey【DP】
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...
- HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】
HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...
- HDOJ 1501 Zipper 【DP】【DFS+剪枝】
HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- HDOJ 1257 最少拦截系统 【DP】
HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDOJ 1159 Common Subsequence【DP】
HDOJ 1159 Common Subsequence[DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】
HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- POJ_2533 Longest Ordered Subsequence【DP】【最长上升子序列】
POJ_2533 Longest Ordered Subsequence[DP][最长递增子序列] Longest Ordered Subsequence Time Limit: 2000MS Mem ...
随机推荐
- Mysql数据库表的迁移和表的复制
同一台服务器上的,数据库之间的表的迁移: create table db.tablename as select * from db2.tablename; 此sql使用于mysql,从一台服务器上的 ...
- Uniform Resource Identifier
https://en.wikipedia.org/wiki/Uniform_Resource_Identifier "URI" redirects here. For othe ...
- 约瑟夫环(java)
问题描述:n个人围成一圈,每隔k个杀死一个,问最后的幸存者的编号 假设标号是0 ~ n-1,幸存者是f[n] 1.特殊情况:f[1]=0 2.一般情况:f[n] = (f[n-1]+k)%n 游戏开始 ...
- zabbix告警邮件、短信发送错误快速排查方法
zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...
- Python list 增加/插入元素的说明
http://blog.csdn.net/cnmilan/article/details/9259343 在Python中append 用来向 list 的末尾追加单个元素,如果增加的元素是一个lis ...
- String s = “1a2a3a4a” 解码为 “1234”
将字符串 String s = “1a2a3a4a” 解码为 “1234” public class Program2 { public static void main(String[] args ...
- 浅谈stiring数
在组合数学,Stirling数可指两类数,第一类Stirling数和第二类Stirling数. stirling常应用于许多组合枚举问题中. 第一类stirling数: 对第一类Stirling数 ...
- svn搭建脚本
1.yum install subversion 2.输入rpm -ql subversion查看安装位置 我们知道svn在bin目录下生成了几个二进制文件. 输入 svn --help可以查看svn ...
- p3386 二分图匹配模板
https://www.luogu.org/problemnew/show/P3386 可以只做一边的匹配 #include <bits/stdc++.h> using namespace ...
- linux 文件三大特殊权限(SUID SGID SBIT)
SGID(这个应该是文件共享里面最常用权限管理手段) 作用于目录或可执行程序,作用于目录代表在此目录创建的文件或目录,默认的属组继承此目录的属组.例如 我这个testgroup 没有设置SGID .我 ...