1 条题解
-
0
C :
/* * ===================================================================================== * * Filename: 908.c * * Description: hahah LCS * * Version: 1.0 * Created: 2013/9/8 22:08:10 * Revision: none * Compiler: gcc * * Author: mdk-vim.cpp-c (mdk), mengdaikun@gmail.com * Company: cjluacm-vim-mdk * * ===================================================================================== */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define MAX 100 int dp[MAX][MAX]; int max(int a, int b) { return a > b ? a : b ; } int main() { //freopen("a.in","r",stdin); char str1[MAX],str2[MAX]; int i,j; int len1,len2; while(~scanf("%s %s",str1,str2)) { len1 = strlen(str1); len2 = strlen(str2); for(i = 0 ; i <= len1 ; i++) dp[0][i] = 0; for(j = 0 ; j <= len2 ; j++) dp[j][0] = 0; for(j = 0 ; j < len1 ; j++) { for(i = 0 ; i < len2 ; i++) { if(str1[j] == str2[i]) dp[i+1][j+1] = dp[i][j]+1; else dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]); } } printf("%d\n",dp[len2][len1]); } return 0; }
Java :
import java.util.*; import java.io.*; import java.math.*; public class Main{ public static Scanner cin=new Scanner(System.in); public static String a,b; public static int[][] dp; public static int lena,lenb; public static void main(String []args){ while(cin.hasNext()){ a=cin.next(); b=cin.next(); lena=a.length(); lenb=b.length(); dp=new int[lena][lenb]; for(int i=0;i<lena;i++){ for(int j=0;j<lenb;j++){ if(i==0&&j==0){ if(a.charAt(i)==b.charAt(j)){ dp[i][j]=1; }else{ dp[i][j]=0; } }else if(i==0){ if(a.charAt(i)==b.charAt(j)){ dp[i][j]=1; }else{ dp[i][j]=dp[i][j-1]; } }else if(j==0){ if(a.charAt(i)==b.charAt(j)){ dp[i][j]=1; }else{ dp[i][j]=dp[i-1][j]; } }else{ if(a.charAt(i)==b.charAt(j)){ dp[i][j]=dp[i-1][j-1]+1; }else{ dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]); } } } } System.out.println(dp[lena-1][lenb-1]); } } }
- 1
信息
- ID
- 1839
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者