#include <iostream> #include <vector> #include <string> using namespace std; bool wyliczanka(int start, vector<int> zbior) { if (zbior.size() < 2) return false; if (zbior[start] > 0) zbior[start] -= 1; else return false; if (start == 0) { //cout << "if"; if (wyliczanka(start + 1, zbior)) return true; } else if (start == zbior.size() - 1) { // cout << "else if"; if (wyliczanka(start - 1, zbior)) return true; } else { //cout << "else"; if (wyliczanka(start - 1, zbior) || wyliczanka(start + 1, zbior)) return true; } for (int i = 0; i < zbior.size(); i++) { if (zbior[i] > 0) return false; } return true; } int main() { int t; vector<vector<int>> il_razy_zabawki; cin >> t; for (int i = 0; i < t; i++) { int n; cin >> n; cin.ignore(); string linia; getline(cin, linia); il_razy_zabawki.push_back({}); string liczba; for (char znak : linia) { if (znak != ' ') liczba += znak; else { il_razy_zabawki[i].push_back(stoi(liczba)); liczba = ""; } } il_razy_zabawki[i].push_back(stoi(liczba)); } // DEBUGOWANIE wektora //for (int i = 0; i < il_razy_zabawki.size(); i++) //{ // for (int j = 0; j < il_razy_zabawki[i].size(); j++) // cout << il_razy_zabawki[i][j] << " "; // cout << "\n"; //} for (int i = 0; i < il_razy_zabawki.size(); i++) { bool flaga = 0; for (int j = 0; j < il_razy_zabawki[i].size(); j++) { bool wynik = wyliczanka(j, il_razy_zabawki[i]); if (wynik) { cout << "TAK" << endl; flaga = 1; break; } } if (!flaga) cout << "NIE" << endl; } }
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #include <iostream> #include <vector> #include <string> using namespace std; bool wyliczanka(int start, vector<int> zbior) { if (zbior.size() < 2) return false; if (zbior[start] > 0) zbior[start] -= 1; else return false; if (start == 0) { //cout << "if"; if (wyliczanka(start + 1, zbior)) return true; } else if (start == zbior.size() - 1) { // cout << "else if"; if (wyliczanka(start - 1, zbior)) return true; } else { //cout << "else"; if (wyliczanka(start - 1, zbior) || wyliczanka(start + 1, zbior)) return true; } for (int i = 0; i < zbior.size(); i++) { if (zbior[i] > 0) return false; } return true; } int main() { int t; vector<vector<int>> il_razy_zabawki; cin >> t; for (int i = 0; i < t; i++) { int n; cin >> n; cin.ignore(); string linia; getline(cin, linia); il_razy_zabawki.push_back({}); string liczba; for (char znak : linia) { if (znak != ' ') liczba += znak; else { il_razy_zabawki[i].push_back(stoi(liczba)); liczba = ""; } } il_razy_zabawki[i].push_back(stoi(liczba)); } // DEBUGOWANIE wektora //for (int i = 0; i < il_razy_zabawki.size(); i++) //{ // for (int j = 0; j < il_razy_zabawki[i].size(); j++) // cout << il_razy_zabawki[i][j] << " "; // cout << "\n"; //} for (int i = 0; i < il_razy_zabawki.size(); i++) { bool flaga = 0; for (int j = 0; j < il_razy_zabawki[i].size(); j++) { bool wynik = wyliczanka(j, il_razy_zabawki[i]); if (wynik) { cout << "TAK" << endl; flaga = 1; break; } } if (!flaga) cout << "NIE" << endl; } } |