UVA - 10069 Distinct Subsequences 不同子序列
来源:互联网 发布:php微信公众号源码 编辑:程序博客网 时间:2024/04/28 14:56
题目大意:给出两个字符串,要求求出字符串1的有多少的子串是字符串2
解题思路:这题的数据很大,高达10^100,得用大数据的加法,用dp[i][j]表示长度为j的字符串有多少种表示长度为i的字符串,那样就可推出转换方程
1.如果长度为i的字符串的最后一个字符和长度为j的字符串的最后一个字符相同的话,则dp[i][j] = dp[i][j-1]+dp[i-1][j-1]
2.如果不相同的话,dp[i][j] = dp[i][j-1]
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define maxn 10005char dp[105][10005][105];char a[maxn];char b[105];int len1,len2;void add(char *c,char *a,char *b) {int l1 = strlen(a);int l2 = strlen(b);int l3 = max(l1,l2);memset(c,0,sizeof(c[0])*(l3+2));for(int i = l1 - 1,j = l3; i >= 0; i--,j--)c[j] += a[i] - '0';for(int i = l2 - 1,j = l3; i >= 0; i--,j--)c[j] += b[i] - '0';for(int i = l3; i > 0 ;c[i] = c[i] + '0',i--)if(c[i] > 9) {c[i] -= 10;c[i-1]++;}if(!c[0]) {for(int i = 0; i < l3; i++)c[i] = c[i+1];c[l3] = 0;}else c[0] = '1';}int main() {int test;scanf("%d", &test);while(test--){scanf("%s%s",a,b);len1 = strlen(a);len2 = strlen(b);for(int i = 0 ; i <= len1; i++)strcpy(dp[0][i],"1");for(int i = 1; i <= len2; i++)for(int j = i; j <= len1; j++) if(b[i-1] == a[j-1]) add(dp[i][j],dp[i][j-1],dp[i-1][j-1]);elsestrcpy(dp[i][j],dp[i][j-1]);printf("%s\n",dp[len2][len1]);}return 0;}
0 0
- UVA - 10069 Distinct Subsequences 不同子序列
- UVa Problem 10069 Distinct Subsequences (不同的子序列)
- uva 10069 Distinct Subsequences 不同的序列
- Distinct Subsequences 不同子序列
- Distinct Subsequences 不同的子序列个数
- LeetCode: Distinct Subsequences(不同子序列的个数)
- LeetCode | Distinct Subsequences(不同的子序列)
- CSU 1354 Distinct Subsequences 求不同子序列和 dp
- 118.Distinct Subsequences-不同的子序列(中等题)
- Leetcode 115 Distinct Subsequences(不同的子序列)
- uva 10069 Distinct Subsequences
- UVA 10069 Distinct Subsequences
- UVa 10069 - Distinct Subsequences
- UVa 10069 - Distinct Subsequences
- UVa 10069 - Distinct Subsequences
- uva 10069 - Distinct Subsequences
- UVa 10069 - Distinct Subsequences
- Uva-10069-Distinct Subsequences
- .net集合类的研究--哈希表(二)--HashSet
- jQuery基础教程笔记-DOM操作
- android Animation动画的xml使用
- Android面试题解答
- openfire源码 部署 常见错误
- UVA - 10069 Distinct Subsequences 不同子序列
- linux 每天备份mysql数据
- oracle多行合并一行
- BZOJ 1193: [HNOI2006]马步距离
- Android local socket学习总结
- 判定三角形
- FROM_UNIXTIME函数差一毫秒问题
- linux c/c++ 单机和集群memcached客户端
- Java三大特性分析-多态