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[1010][1010];
  23. int main()
  24. {
  25. string s1,s2;
  26. int t=1;
  27. while(getline(cin,s1))
  28. {
  29. if(s1[0]=='#') break;
  30. //cin>>s2;
  31. getline(cin,s2);
  32. memset(dp,0,sizeof(dp));
  33. int len_s1=s1.length();
  34. int len_s2=s2.length();
  35. for(int i=1;i<=len_s1;i++)
  36. {
  37. for(int j=1;j<=len_s2;j++)
  38. {
  39. if(s1[i-1]==s2[j-1])
  40. {
  41. dp[i][j]=dp[i-1][j-1]+1;
  42. }
  43. else
  44. {
  45. dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
  46. }
  47. }
  48. }
  49. cout<<"Case #"<<t++<<": you can visit at most "<<dp[len_s1][len_s2]<<" cities."<<endl;
  50. }
  51. }
  52.  
Success #stdin #stdout 0s 8480KB
stdin
abcd
acdb
abcd
dacb
#
stdout
Case #1: you can visit at most 3 cities.
Case #2: you can visit at most 2 cities.