【UVA】10066-The Twin Towers(最长公共子串问题)
2014-08-06 08:36
417 查看
赤裸裸的最长公共子串问题,没什么好说的,注意的是,每组数据后面都有一个空行。
13996019 | 10066 | The Twin Towers | Accepted | C++ | 0.015 | 2014-08-06 00:34:53 |
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define MAXD 100 + 10 int dp[MAXD][MAXD]; int N1,N2,Case = 1; int arr1[MAXD]; int arr2[MAXD]; void init(){ memset(dp,0,sizeof(dp)); return ; } void DP(){ init(); for(int i = 1; i <= N1 ; i++){ for(int j = 1 ; j <= N2 ; j++) if(arr2[j] == arr1[i]) dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + 1); else dp[i][j] = max(max(dp[i][j],dp[i - 1][j]),max(dp[i][j],dp[i][j - 1])); } printf("Twin Towers #%d\n",Case++); printf("Number of Tiles : %d\n",dp[N1][N2]); printf("\n"); } int main(){ while(scanf("%d%d",&N1,&N2)){ if(!N1 && !N2) break; for(int i = 1 ; i <= N1 ; i ++) scanf("%d",&arr1[i]); for(int i = 1; i <= N2 ; i++) scanf("%d",&arr2[i]); DP(); } return 0; }
相关文章推荐
- UVa 10192 - Vacation & UVa 10066 The Twin Towers ( LCS 最长公共子串)
- UVa 10192 - Vacation & UVa 10066 The Twin Towers ( LCS 最长公共子串)
- UVA 10066 - The Twin Towers(最长公共子序)
- uva 10066 The Twin Towers (最长公共子)
- Java动态规划求解最长公共子串问题
- UVA 10066 The Twin Towers
- VB6求两个字符串最长公共子串的问题
- 动态规划-最长公共子串问题的实现
- UVa 10066 - The Twin Towers(LCS水题)
- 最长公共子串问题
- 算法回顾 - 动态规划 之 最长公共子串问题
- 最长公共子串问题
- 动态规划-最长公共子串问题-java版
- 最长公共子串问题 LCS
- VB6求两个字符串最长公共子串的问题
- 求两个字符串最长公共子串(LCS问题) 两种思想
- 最长公共子串问题
- 最长公共子串问题的后缀数组解法
- 求最长公共子串问题
- 最长公共子串问题的实现