uva 11081 - Strings(LCS)
2013-09-25 23:58
405 查看
题目链接:11081 - Strings
题目大意:给出三个字符串,从分别从第一个字符串和第二个字符串中挑选子串a,b,用a和b组成第三个字符串,问可组成的子串有多少种。
解题思路:说起来惭愧啊,题目一点思路没有,题目老早就看了,今天查了题解,愣是想了一晚上,终于想清楚一点点了,dp[i][j][k]表是用s1中的前i个字符和s2中的前j个字符的子串组成s3前k个字符的情况。
仿照http://www.cnblogs.com/yuzhaoxin/archive/2012/05/04/2483259.html
题目大意:给出三个字符串,从分别从第一个字符串和第二个字符串中挑选子串a,b,用a和b组成第三个字符串,问可组成的子串有多少种。
解题思路:说起来惭愧啊,题目一点思路没有,题目老早就看了,今天查了题解,愣是想了一晚上,终于想清楚一点点了,dp[i][j][k]表是用s1中的前i个字符和s2中的前j个字符的子串组成s3前k个字符的情况。
仿照http://www.cnblogs.com/yuzhaoxin/archive/2012/05/04/2483259.html
#include <stdio.h> #include <string.h> const int N = 70; const int tmp = 10007; int dp , dp1 , dp2 ; char s1 , s2 , s3 ; int solve() { int len1 = strlen(s1 + 1); int len2 = strlen(s2 + 1); int len3 = strlen(s3 + 1); memset(dp, 0, sizeof(dp)); memset(dp1, 0, sizeof(dp1)); memset(dp2, 0, sizeof(dp2)); for (int i = 0; i <= len1; i++) for (int j = 0; j <= len2; j++) dp[i][j][0] = dp1[i][j][0] = dp2[i][j][0] = 1; for (int k = 1; k <= len3; k++) { for (int i = 0; i <= len1; i++) { for (int j = 0; j <= len2; j++) { if (i) { dp1[i][j][k] = dp1[i - 1][j][k]; if (s1[i] == s3[k]) dp1[i][j][k] += dp[i - 1][j][k - 1]; dp1[i][j][k] %= tmp; } if (j) { dp2[i][j][k] = dp2[i][j - 1][k]; if (s2[j] == s3[k]) dp2[i][j][k] += dp[i][j - 1][k - 1]; dp2[i][j][k] %= tmp; } dp[i][j][k] = (dp1[i][j][k] + dp2[i][j][k]) % tmp; } } } return dp[len1][len2][len3]; } int main() { int cas; scanf("%d",&cas); while (cas--) { scanf("%s%s%s", s1 + 1, s2 + 1, s3 + 1); printf("%d\n", solve()); } return 0; }
相关文章推荐
- uva 11081 - Strings(LCS)
- UVA 11081 - Strings
- UVa 11081 Strings(字符串匹配DP)
- UVA 11081 Strings
- uva 11081 strings
- UVa 11081 - Strings(dp)
- UVA - 11081 Strings
- UVA - 11081 Strings 三个三维DP
- uva 11081 Strings(递推)
- UVA 11081 - Strings
- uva 11081 Strings 字符串匹配
- UVA 11081 Strings
- Strings - UVa 11081 dp
- UVA 11081 Strings(dp)
- uva11081 - Strings
- UVA 11081 Strings
- UVA - 10066 - The Twin Towers (动态规划, LCS)
- uva10192 - Vacation(dp,lcs)
- uva 10298 - Power Strings(KMP)
- Prince and Princess UVA - 10635(LCS转LIS)