М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
vovagudov29
vovagudov29
11.11.2021 03:13 •  Информатика

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

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

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

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

👇
Ответ:
MasterHacker
MasterHacker
11.11.2021
Хорошо, давайте решим эту задачу.

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

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

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