Количество повторений максимального элемента в последовательности
Условие (переведено):
Написать программу, которая получает целое число N, а затем последовательность из N целых чисел. Программа должна вывести количество повторений максимального элемента в последовательности. Запрещено использовать массивы
Примеры:
Входные данные
0
Результат работы
0
Входные данные
5 2 6 6 3 -5
Результат работы
2
Входные данные
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
Результат работы
10
#include <iostream>
int main()
{
int n;
std::cin >> n;
int i, j, count = 0;
for (i = 0; i < n; i++)
{
std::cin >> n;
for(j = i + 1; j < n; j++)
{
if (n == i && n == j)
{
++count;
break;
}
}
}
std::cout << "repeated elements count" << count;
}
Ответы (3 шт):
Если перевод
Программа должна вывести количество повторений максимального элемента в последовательности
правильный, то вот:
#include <iostream>
using namespace std;
int find_reps(int n){
int num, reps = 0;
long long max = -2147483649ll;
if (n == 0 || n == 1){cin >> num; return 0;}
for (int i = 0; i < n; ++i){
cin >> num;
if (num > max){
max = num;
reps = 0;
}
if (num == max) reps++;
}
return reps;
}
int main(){
int n;
cin >> n;
cout << find_reps(n);
return 0;
}
Здесь создаётся переменная max с значением -2147483649 (чтобы любое число типа int было больше его). Если n == 1, можно сразу вернуть 0 повторений. Далее в цикле вводятся значения (их можно писать через пробел). Если число большего максимума (значит, это новый максимум) - оно сохраняется в переменную и количество повторений обнуляется (нашли новый максимум, он не повторился ещё ни разу). Ну и если введённое число равно максимуму, значит оно повторяется. Когда цикл завершится - можно вернуть повторения.
В измененном варианте задание - вот, все просто:
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
if (N == 0)
{
cout << "0\n";
return 0;
}
int max, maxcount = 1;
cin >> max;
for(int i = 1, m; i < N; ++i)
{
cin >> m;
if (max < m)
{
max = m;
maxcount = 1;
}
else if (max == m)
{
maxcount++;
}
}
cout << maxcount << endl;
}
#include <iostream>
int main() {
int n;
std::cin >> n;
int num, max, count;
if(n == 1){
std::cin >> num;
}
for(int i = 0; i < n; ++i) {
std::cin >> num;
if(num > max) {
max = num;
count = 0;
}
if(num == max) {
count++;
}
}
std::cout << count;
}