HDU 1501 高效!
来源:互联网 发布:德比软件官网 编辑:程序博客网 时间:2024/06/06 04:10
DP解法:
最优子结构分析:如上例,如果A、B可以组成C,那么,C最后一个字母e,必定是 A 或 C 的最后一个字母组成。
C去除除最后一位,就变成是否可以求出 A-1和B 或者 A与B-1 与 是否可以构成 C-1。。。
状态转移方程: 用f[i][j] 表示 表示A前 i 为 和B 前j 位是否可以组成 C的前i+j位
dp[i][j]= (dp[i-1][j]&&(a[i]==c[i+j]))||(dp[i][j-1]&&(b[j]==c[i+j]))
#include<stdio.h>#include<string.h>char a[201],b[201],c[402];int la,lb,lc;int dp[201][201];int main(){int ncase;scanf("%d",&ncase);for(int n=1; n<=ncase; n++) {a[0]='p';b[0]='p';c[0]='p';scanf("%s%s%s",a+1,b+1,c+1);la=strlen(a);lb=strlen(b);lc=strlen(c);la-=1;lb-=1;//处理边界for (int i=1; i<=la; i++)if (a[i]==c[i]) dp[i][0]=1; for (int i=1; i<=lb; i++)if (b[i]==c[i]) dp[0][i]=1;//DPfor (int i=1; i<=la; i++)for (int j=1; j<=lb; j++)dp[i][j]= (dp[i-1][j]&&(a[i]==c[i+j]))||(dp[i][j-1]&&(b[j]==c[i+j]));printf("Data set %d: ",n);if (dp[la][lb]==1) printf("yes\n");else printf("no\n");}return 0;}
- HDU 1501 高效!
- hdu 5037 Frog(高效)
- hdu 5481 Desiderium(高效)
- hdu 5497 Inversion(高效)
- hdu 4915 Parenthese sequence(高效)
- hdu 4920 Matrix multiplication(高效)
- hdu 4961 Boring Sum(高效)
- hdu 4970 Killing Monsters(高效)
- hdu 5510 Bazinga(高效)
- hdu 5524 Subtrees(高效)
- hdu 5570 balls(高效)
- hdu 5587 Array(高效)
- hdu 3486(RMQ+高效枚举)
- hdu 5875 Function(高效)
- hdu 5496 Beauty of Sequence(高效)
- hdu 4647 Another Graph Game(高效)
- hdu 4657 Find Permutation(高效)
- 高效
- 360搜索启用“360sou.com”与“360so.com”独立域名
- 微软正在找出苹果的弱点
- S5PV210 ANDROID 为摄像头增加闪光灯
- 标签技术
- Android输入法之如何自定义每个key的属性
- HDU 1501 高效!
- 反咬一口 三星控告苹果限制用户选择
- 百度分页特效
- Street-to-Shop: Cross-Scenario Clothing Retrieval via Parts Alignment and Auxiliary Set
- 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)
- 隐式类类型转换以及explicit
- Take Ownership of Your Actionsby Taking Responsibility--让责任心去支配你的行动
- MapKit学习笔记及源码分享
- rhel5.4 rpm安装基于pptp协议vpn