fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FR0(i,N) for(i=0;i<(N);i++)
  4. #define FR1(i,N) for(i=1;i<=(N);i++)
  5. #define FRN(i,k,N) for(i=k;i<(N);i++)
  6. #define pf printf
  7. #define db double
  8. #define max3(a,b,c) max(max(a,b),c)
  9. #define min3(a,b,c) min(min(a,b),c)
  10. #define sci(n) scanf("%d",&n)
  11. #define scl(n) scanf("%lld",&n)
  12. #define scf(n) scanf("%f",&n)
  13. #define scd(n) scanf("%lf",&n)
  14. #define scs(s) scanf("%s",&s)
  15. #define scll(n) scanf("%%I64d",&n)
  16. #define PI acos(-1.0)
  17. #define LL long long
  18. #define MX 1000005
  19. #define MOD 1000000007
  20. typedef long long int ll;
  21. bool status[1100002];
  22. int dp[5010][5010];
  23. int main()
  24. {
  25. string s1,s2;
  26. while(getline(cin,s1))
  27. {
  28. getline(cin,s2);
  29. int len1=s1.length();
  30. int len2=s2.length();
  31. memset(dp,0,sizeof(dp));
  32. for(int i=1;i<=len1;i++)
  33. {
  34. for(int j=1;j<=len2;j++)
  35. {
  36. if(s1[i-1]==s2[j-1])
  37. {
  38. dp[i][j]=dp[i-1][j-1]+1;
  39. }
  40. else
  41. {
  42. dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
  43. }
  44. }
  45. }
  46. // cout<<dp[len1][len2]<<endl;
  47. printf("%d\n",dp[len1][len2]);
  48. }
  49. }
  50.  
  51.  
Success #stdin #stdout 0.25s 102592KB
stdin
bcacbcabbaccbab
bccabccbbabacbc
a1b2c3d4e
zz1yy2xx3ww4vv
abcdgh
aedfhr
abcdefghijklmnopqrstuvwxyz
a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0
abcdefghijklmnzyxwvutsrqpo
opqrstuvwxyzabcdefghijklmn
stdout
11
4
3
26
14