Guest User

Untitled

a guest
Jan 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #include <iostream> //musimy znalezc maks liczbe wspolnych liter z dwoch wyrazow. np in: 1 10 deskorolka 5 stokrotka out: 6 (skooka)
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. int t; //testy
  8. cin >> t;
  9. for(int i=0; i<t;i++)
  10. {
  11. int d1, d2, ile=0; //dlugoscie wyrazow i zliczanie wspolnych
  12. string wyraz1, wyraz2;
  13. cin >>d1>>wyraz1>>d2>>wyraz2;
  14. int wyzsza;
  15.  
  16. if (d2>d1) //obliczanie dlugosci petli
  17. wyzsza=d2;
  18. else wyzsza=d1;
  19.  
  20. for(int x=0;x<wyzsza;x++) // liczymy po prostu do momentu gdy napis sie ukroci do "", czyli jest 0 znakow
  21. {
  22. if(d2>=d1) //moze tu byc blad, ale im mniejszy wyraz, tym, no sorry, mniej wspolnych. Szukamy najpierw z krotszego w dluzszym
  23. {
  24. char szukaj = wyraz1[x]; //bo szukamy po literze, a nie calym lancuchu
  25. size_t pozycja=wyraz2.find(szukaj);
  26. if(pozycja!=string::npos)
  27. {
  28. ile++;
  29. wyraz2.erase(0,pozycja+1);
  30. d2-=(pozycja+1);
  31.  
  32. }else{
  33. d2-=1;
  34. wyraz2.erase(0,1);
  35. }
  36.  
  37. }
  38. else{ //po prostu odwrocenie wyrazow
  39.  
  40. char szukaj = wyraz2[x];
  41. size_t pozycja=wyraz1.find(szukaj);
  42. if(pozycja!=string::npos)
  43. {
  44. ile++;
  45. wyraz1.erase(0,pozycja+1);
  46. d1-=(pozycja+1);
  47. }
  48. else{
  49. d1-=1;
  50. wyraz1.erase(0,1);
  51. }
  52. }
  53. }
  54. cout <<ile;
  55. }
  56. }
Add Comment
Please, Sign In to add comment