В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
veseloffgleb
veseloffgleb
12.10.2021 13:53 •  Информатика

Задача №112296. Самая длинная цепочка Напишите программу, которая находит в массиве самую длинную цепочку одинаковых элементов. Программа должна вывести значение элемента, который встречается наибольшее число раз подряд, и длину этой цепочки. Если в массиве есть несколько цепочек максимальной длины, нужно вывести данные по первой из них.

Входные данные
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 3 < N ≤ 10000 .

Выходные данные
Программа должна вывести два числа через пробел: значение элемента массива, который встречается наибольшее число раз подряд, и длину этой цепочки.

Примеры
входные данные
7
1 2 2 1 1 1 3
выходные данные
1 3
НА С++!!

Ответ:
KaterinaKlimenko2017
KaterinaKlimenko2017
18.01.2024 11:23
Хорошо, давайте решим эту задачу.

Для начала, создадим переменные для хранения текущего элемента и максимальной длины цепочки. Изначально установим их значениями первого элемента массива:

```cpp
int currentElement = array[0];
int maxLength = 1;
```

Затем пройдемся по всем элементам массива с помощью цикла, начиная со второго элемента:

```cpp
for (int i = 1; i < N; i++) {
```

Для каждого элемента будем проверять, равен ли он предыдущему элементу. Если равен, значит, мы находимся в цепочке одинаковых элементов и увеличиваем длину цепочки:

```cpp
if (array[i] == array[i-1]) {
length++;
```

Если же элемент не равен предыдущему, значит, цепочка оборвалась. В этом случае проверяем, является ли текущая длина цепочки максимальной. Если да, то обновляем максимальную длину и текущий элемент:

```cpp
} else {
if (length > maxLength) {
maxLength = length;
currentElement = array[i-1];
}
length = 1;
}
```

После цикла проверяем длину последней цепочки, так как она может быть максимальной. Если да, то также обновляем максимальную длину и текущий элемент:

```cpp
if (length > maxLength) {
maxLength = length;
currentElement = array[N-1];
}
```

Наконец, выводим результаты на экран:

```cpp
cout << currentElement << " " << maxLength << endl;
```

Вот полный код программы:

```cpp
#include
using namespace std;

int main() {
int N;
cin >> N;
int array[N];

for (int i = 0; i < N; i++) {
cin >> array[i];
}

int currentElement = array[0];
int maxLength = 1;
int length = 1;

for (int i = 1; i < N; i++) {
if (array[i] == array[i-1]) {
length++;
} else {
if (length > maxLength) {
maxLength = length;
currentElement = array[i-1];
}
length = 1;
}
}

if (length > maxLength) {
maxLength = length;
currentElement = array[N-1];
}

cout << currentElement << " " << maxLength << endl;

return 0;
}
```

Надеюсь, это поможет вам понять, как решить данную задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?