fork download
  1. #include <iostream>
  2. #include<algorithm>
  3. #include<string>
  4. #include<cstring>
  5. using namespace std;
  6.  
  7. int main() {
  8. int length;
  9. int test[2][500];
  10. memset(test,0,sizeof test);
  11. int val[2][500];
  12. string s1,s2;
  13. cin>>length;
  14. cin>>s1;
  15. cin>>s2;
  16. for(int i=0;i<s1.size();i++)
  17. {
  18. for(int j=0;j<s2.size();j++)
  19. {
  20. if(s1[i]==s2[j]){
  21. if(i==0 || j==0){
  22. val[i%2][j]=0;
  23. test[i%2][j]=1;
  24. }
  25. else{
  26. test[i%2][j]=test[(i-1)%2][j-1]+1;
  27. if(test[i%2][j]==length)
  28. val[i%2][j]=val[(i-1)%2][j-1]+length;
  29. else if(test[i%2][j]>length)
  30. val[i%2][j]=val[(i-1)%2][j-1]+1;
  31. else val[i%2][j]=val[(i-1)%2][j];
  32. }
  33.  
  34.  
  35. }
  36. else{
  37. if(i==0 && j==0)
  38. val[i][j]=0;
  39. else if(i==0)
  40. val[i][j]=val[i][j-1];
  41. else if(j==0)
  42. val[i%2][j]=val[(i-1)%2][j];
  43. else
  44. val[i%2][j]=max(val[(i-1)%2][j],val[i%2][j-1]);
  45. }
  46. }
  47. }
  48. cout<<val[(s1.size()-1)%2][s2.size()-1];
  49. return 0;
  50. }
Success #stdin #stdout 0s 3480KB
stdin
4
lovxxxelyxxx
xxxxxxlovely
stdout
5