uva10069
来源:互联网 发布:mac os 升级老版本 编辑:程序博客网 时间:2024/05/19 12:12
题目的意思很简单,就是问在第一串中取子串与 第二串一样.有几种..
dp的思路很简单,就是如果第一串中的第 i 位 ,与 第二串中的第 j 位相等.则f[i][j] = f[i][ j - 1] + f[i - 1][j - 1] 否则f[i][j] = f[i][j - 1] .
但是这个数据太大了,所以要用高精度...因为懒得写大数相加.直接套了模板上去了...
AC代码:
#include<stdio.h>#include<string.h>using namespace std;const int N = 10005;const int M = 105;void Add(char *c, char *a, char *b) { int len_a = strlen(a); int len_b = strlen(b); int len_c = len_a > len_b ? len_a : len_b; memset(c, 0, (len_c+2)*sizeof(c[0])); for(int i=len_a-1, j=len_c; i>=0; --i, --j) c[j] += a[i] - '0'; for(int i=len_b-1, j=len_c; i>=0; --i, --j) c[j] += b[i] - '0'; for(int i=len_c; i>0; c[i]+='0', --i) if(c[i] > 9) { c[i] -= 10; ++c[i-1]; } if(!c[0]){ for(int i=0; i<len_c; ++i) c[i] = c[i+1]; c[len_c] = 0; } else c[0] = '1'; } char str1[N];char str2[M];char f[M][N][102];int main () {int t;scanf("%d",&t);getchar();while(t--) {scanf("%s%s",str1,str2);int len1 = strlen(str1);int len2 = strlen(str2);for (int i = 0 ;i <= len1 ;i++) {strcpy(f[0][i] ,"1" );}for (int i = 1 ; i <= len2 ;i++) {for (int j = i ; j <= len1 ;j++) {strcpy(f[i][j], f[i][j-1]);if(str1[j] == str2[i]) {Add (f[i][j] , f[i][j - 1] ,f[i - 1][j - 1]) ;}}}printf("%s",f[len2][len1]);printf("\n");}}
0 0
- uva10069
- uva10069
- uva10069 DistinctSubsequeces
- uva10069(DP+大数)
- uva10069(DP + 高精度运算)
- uva10069 - Distinct Subsequences(动规,大数)
- UVA10069 Distinct Subsequences 超级大数 + DP
- uva10069 - Distinct Subsequences(大数+DP)
- Swift中用NSURLConnection解析URL,并解析Jason数据
- oracle 六
- visual C++使用ADO访问sql server 2000
- C++标准库__std::deque(双端队列),std::queue(队列),std::stack(栈)__由stl的定义我们就可以看出 queue和stack都是基于deque实现的和常用接口
- Android安全机制
- uva10069
- oracle 七
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- dp HDU 1421
- Cheap Ugg Boots Discount Code ylddl yixf13
- Wireshark 教程
- Cheap Ugg Boots Primark stfnb tbyn27
- Oracle db中 CONNECT role的含义
- Cheap Ugg Gloves bqpwr ywwk20