Другой способ сделать это - использовать std::map
, который ведет подсчет количества раз, когда данное значение встречается в вашем массиве. Вы перестанете искать, как только у вас появится число, которое имеет три вхождения.
Вот «минималистская» версия кода:
#include <iostream>
#include <map>
using std::cin; // Many folks (especially here on SO) don't like using the all-embracing
using std::cout; // ... statement, "using namespace std;". So, these 3 lines only 'use'
using std::endl; // ... what you actually need to!
int main() {
int n, a[10], skirt = 0;
std::map<int, int> gots;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < n && skirt < 3; i++) {
skirt = 1;
if (gots.find(a[i]) != gots.end()) skirt = gots[a[i]] + 1;
gots.insert_or_assign(a[i], skirt);
}
cout << (skirt >= 3 ? "TAIP" : "NE") << endl;
return 0;
}
Я не говорю, что это лучше (илихуже других ответов - просто еще один способ решения проблемы и использования возможностей стандартной библиотеки. Кроме того, при таком подходе вы можете легко изменить код, чтобы подсчитать, сколько чисел встречается три или более раз или любое количество раз.
Не стесняйтесь просить дополнительных разъяснений и / или объяснений.