Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> //musimy znalezc maks liczbe wspolnych liter z dwoch wyrazow. np in: 1 10 deskorolka 5 stokrotka out: 6 (skooka)
- #include <string>
- using namespace std;
- int main(){
- int t; //testy
- cin >> t;
- for(int i=0; i<t;i++)
- {
- int d1, d2, ile=0; //dlugoscie wyrazow i zliczanie wspolnych
- string wyraz1, wyraz2;
- cin >>d1>>wyraz1>>d2>>wyraz2;
- int wyzsza;
- if (d2>d1) //obliczanie dlugosci petli
- wyzsza=d2;
- else wyzsza=d1;
- for(int x=0;x<wyzsza;x++) // liczymy po prostu do momentu gdy napis sie ukroci do "", czyli jest 0 znakow
- {
- if(d2>=d1) //moze tu byc blad, ale im mniejszy wyraz, tym, no sorry, mniej wspolnych. Szukamy najpierw z krotszego w dluzszym
- {
- char szukaj = wyraz1[x]; //bo szukamy po literze, a nie calym lancuchu
- size_t pozycja=wyraz2.find(szukaj);
- if(pozycja!=string::npos)
- {
- ile++;
- wyraz2.erase(0,pozycja+1);
- d2-=(pozycja+1);
- }else{
- d2-=1;
- wyraz2.erase(0,1);
- }
- }
- else{ //po prostu odwrocenie wyrazow
- char szukaj = wyraz2[x];
- size_t pozycja=wyraz1.find(szukaj);
- if(pozycja!=string::npos)
- {
- ile++;
- wyraz1.erase(0,pozycja+1);
- d1-=(pozycja+1);
- }
- else{
- d1-=1;
- wyraz1.erase(0,1);
- }
- }
- }
- cout <<ile;
- }
- }
Add Comment
Please, Sign In to add comment