#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; } |