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

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

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

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

ВалерияГрузд ВалерияГрузд    1   22.02.2021 05:51    95

Ответы
khezh073 khezh073  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;
}
```

Надеюсь, это поможет вам понять, как решить данную задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика