UVA 10069 dp+高精度
来源:互联网 发布:自然之名酵母水 知乎 编辑:程序博客网 时间:2024/05/19 18:15
【题意】给了你两个字符串s1,s2,问你s2在s1中出现的次数,注意是子序列就行了,不一定要连续.
【分析】显然是个dp!
【状态表示】dp[i][j]代表s1串中的前i个字符和字符串2中的前j个字符匹配的最大值。
【状态转移 】dp[i][j] = dp[i-1][j] (s[i-1]!=s[j-1]),dp[i][j] = dp[i][j]+dp[ii-1][j-1],(s1[i-1]==s2[j-1]);
【坑点】高精度,这里用java整的,真是坑!!!
【AC代码】
package Main;import java.util.*;import java.math.*;public class Main{ public static void main(String[] args){ int T,i,j,k; String s1,s2; BigInteger dp[][] = new BigInteger[10010][110]; Scanner cin=new Scanner(System.in); T=cin.nextInt(); for(k=1; k<=T; k++) { s1 = cin.next(); s2 = cin.next(); int len1 = s1.length(); int len2 = s2.length(); for(i=0; i<=len1; i++) for(j=0; j<=len2; j++) dp[i][j]=BigInteger.ZERO; for(i=0; i<=len1; i++)dp[i][0] = BigInteger.ONE; for(i=1; i<=len1; i++) { for(j=1; j<=len2; j++) { dp[i][j] = dp[i-1][j]; if(s1.charAt(i-1)==s2.charAt(j-1)) { dp[i][j]=dp[i][j].add(dp[i-1][j-1]); } } } System.out.println(dp[len1][len2]); } }}
1 0
- UVA 10069 dp+高精度
- dp+高精度 uva-10069-Distinct Subsequences
- UVA 10069 Distinct Subsequences(dp + 高精度)
- Distinct Subsequences - UVa 10069 dp+高精度
- UVa 11375 Matches (DP&高精度)
- UVA - 11375-Matches-dp+高精度
- UVA 10069 Distinct Subsequences(dp+高精度加法)
- UVA 12105 - Bigger is Better(DP+高精度)
- UVA题目10157 - Expressions(DP+高精度)
- UVA 11375 Matches (dp+高精度)【模板】
- uva 10069 Distinct Subsequences(高精度 + DP求解子串个数)
- UVA 10157 - Expressions(dp卡特兰数高精度)
- UVA 10497 - Sweet Child Makes Trouble(DP+高精度)
- uva 10497 - Sweet Child Makes Trouble(dp+高精度)
- uva 11375 Matches 递推关系||DP||高精度
- uva 10069(dp)
- UVA 10328 Coin Toss【带限制条件的递推dp+计数技巧+高精度用java】
- UVa 713 高精度加法
- AC自动机
- 即学即用笔记——利用for脚本实现批量移动文件/文件夹
- 工厂方法模式
- 音频-AudioComponentDescription 类型设置
- 获取系统的相关信息
- UVA 10069 dp+高精度
- javascript小方法之数组去重、数字转成逗号分隔、html元素去标签
- 120. Triangle
- 数据存储--SQLite创建数据库
- [矩阵快速幂] LightOJ 1142 - Summing up Powers (II)
- -bash: rz: command not found
- 设计模式C++生成器模式
- hdu1434(优先队列&&模拟)
- c++primer(第五版) 第十四章 重载运算与类型转换习题答案