#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
string zdanie1, zdanie2;
char przechowywane;
vector <int> poprawnosc;
int dlugosc, przedzialpInt, przedzialkInt, przedzialpStaly, przedzialkStaly, ilePoprawnych;
bool przedzialp = false, przedzialk = false;
int main()
{
cin >> dlugosc >> zdanie1 >> zdanie2;
for (int i = 0; i < dlugosc; i++)
{
poprawnosc.push_back(0);
}
zdanie1 += "-";
zdanie2 += "-";
while (true)
{
for (int i = 0; i < dlugosc; i++)
{
if (zdanie1[i] == zdanie2[i])
{
poprawnosc[i] = 1;
}
else
{
poprawnosc[i] = 0;
if (przedzialp == false /*&& i % 2 == 0*/)
{
przedzialpInt = i;
przedzialp = true;
}
if (/*i % 2 == 0 &&*/ i != przedzialpInt && przedzialk == false && (zdanie1[i + 1] == zdanie2[i + 1] && (((int)zdanie1[i + 1] > 96 && (int)zdanie1[i + 1] < 147) || zdanie1[i + 1] == '-')))
{
przedzialkInt = i;
przedzialk = true;
}
}
}
przedzialpStaly = przedzialpInt;
przedzialkStaly = przedzialkInt;
for (int i = 0; i < (przedzialkStaly - przedzialpStaly) / 2; i++)
{
przechowywane = zdanie1[przedzialkInt];
zdanie1[przedzialkInt] = zdanie1[przedzialpInt];
zdanie1[przedzialpInt] = przechowywane;
przedzialkInt--;
przedzialpInt++;
}
for (int i = 0; i < dlugosc; i++)
{
if (zdanie1[i] == zdanie2[i])
{
ilePoprawnych++;
}
}
if (ilePoprawnych == dlugosc)
{
cout << "TAK";
break;
}
else if (all_of(poprawnosc.begin(), poprawnosc.end(), [](int i) {return i == 0; }))
{
cout << "NIE";
break;
}
ilePoprawnych = 0;
przedzialk = false;
przedzialp = false;
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include <iostream> #include <vector> #include <algorithm> using namespace std; string zdanie1, zdanie2; char przechowywane; vector <int> poprawnosc; int dlugosc, przedzialpInt, przedzialkInt, przedzialpStaly, przedzialkStaly, ilePoprawnych; bool przedzialp = false, przedzialk = false; int main() { cin >> dlugosc >> zdanie1 >> zdanie2; for (int i = 0; i < dlugosc; i++) { poprawnosc.push_back(0); } zdanie1 += "-"; zdanie2 += "-"; while (true) { for (int i = 0; i < dlugosc; i++) { if (zdanie1[i] == zdanie2[i]) { poprawnosc[i] = 1; } else { poprawnosc[i] = 0; if (przedzialp == false /*&& i % 2 == 0*/) { przedzialpInt = i; przedzialp = true; } if (/*i % 2 == 0 &&*/ i != przedzialpInt && przedzialk == false && (zdanie1[i + 1] == zdanie2[i + 1] && (((int)zdanie1[i + 1] > 96 && (int)zdanie1[i + 1] < 147) || zdanie1[i + 1] == '-'))) { przedzialkInt = i; przedzialk = true; } } } przedzialpStaly = przedzialpInt; przedzialkStaly = przedzialkInt; for (int i = 0; i < (przedzialkStaly - przedzialpStaly) / 2; i++) { przechowywane = zdanie1[przedzialkInt]; zdanie1[przedzialkInt] = zdanie1[przedzialpInt]; zdanie1[przedzialpInt] = przechowywane; przedzialkInt--; przedzialpInt++; } for (int i = 0; i < dlugosc; i++) { if (zdanie1[i] == zdanie2[i]) { ilePoprawnych++; } } if (ilePoprawnych == dlugosc) { cout << "TAK"; break; } else if (all_of(poprawnosc.begin(), poprawnosc.end(), [](int i) {return i == 0; })) { cout << "NIE"; break; } ilePoprawnych = 0; przedzialk = false; przedzialp = false; } return 0; } |
English