Напишите программу, которая находит в массиве самую длинную цепочку одинаковых элементов. Программа...

Тематика Информатика
Уровень 5 - 9 классы
массив цепочка одинаковые элементы значение элемента длина цепочки наибольшее число подряд входные данные выходные данные программирование алгоритмы
0

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

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

avatar
задан 3 месяца назад

3 Ответа

0

Пример решения на Python:

N = int(input())
arr = list(map(int, input().split()))

max_count = 1
current_count = 1
max_element = arr[0]

for i in range(1, N):
    if arr[i] == arr[i-1]:
        current_count += 1
        if current_count > max_count:
            max_count = current_count
            max_element = arr[i]
    else:
        current_count = 1

print(max_element, max_count)

Пример работы программы: Входные данные:

10
1 1 1 2 2 2 2 3 3 3

Выходные данные:

1 3

avatar
ответил 3 месяца назад
0

Для решения поставленной задачи напишем программу на языке Python. Программа будет осуществлять следующие шаги:

  1. Считать размер массива N.
  2. Считать элементы массива.
  3. Пройти по массиву, определяя длину всех цепочек одинаковых элементов.
  4. Найти самую длинную цепочку и запомнить значение её элемента и длину.
  5. Вывести результат.

Ниже приведён пример реализации программы:

def find_longest_chain(arr):
    max_value = arr[0]
    max_length = 1

    current_value = arr[0]
    current_length = 1

    for i in range(1, len(arr)):
        if arr[i] == current_value:
            current_length += 1
        else:
            if current_length > max_length:
                max_length = current_length
                max_value = current_value
            current_value = arr[i]
            current_length = 1

    if current_length > max_length:
        max_length = current_length
        max_value = current_value

    return max_value, max_length

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    N = int(data[0])
    arr = list(map(int, data[1:N+1]))
    
    element, length = find_longest_chain(arr)
    print(element, length)

if __name__ == "__main__":
    main()

Пояснение кода:

  1. Функция find_longest_chain(arr):

    • Принимает на вход массив arr.
    • Инициализирует max_value и max_length для хранения данных о самой длинной цепочке.
    • Проходит по массиву, сохраняя текущую цепочку одинаковых элементов.
    • Если текущая цепочка заканчивается и её длина больше, чем максимальная найденная ранее, обновляет max_value и max_length.
    • В конце дополнительная проверка для последней цепочки, которая может быть самой длинной.
  2. Функция main():

    • Читает входные данные.
    • Преобразует данные в список чисел.
    • Вызывает функцию find_longest_chain и выводит результат.

Пример работы программы:

Вход:

10
1 2 2 2 3 3 4 4 4 4

Выход:

4 4

В данном примере программа правильно определяет, что самой длинной цепочкой является цепочка из четырёх четвёрок, и выводит её значение и длину.

avatar
ответил 3 месяца назад
0

Для решения данной задачи можно написать программу на языке Python:

def find_longest_chain(arr):
    max_count = 1
    current_count = 1
    max_element = arr[0]
    
    for i in range(1, len(arr)):
        if arr[i] == arr[i-1]:
            current_count += 1
        else:
            if current_count > max_count:
                max_count = current_count
                max_element = arr[i-1]
            current_count = 1
    
    if current_count > max_count:
        max_count = current_count
        max_element = arr[-1]
    
    return max_element, max_count

# Чтение входных данных
n = int(input())
arr = list(map(int, input().split()))

# Поиск самой длинной цепочки
result = find_longest_chain(arr)

# Вывод результатов
print(result[0], result[1])

При вводе данных в программу она найдет самую длинную цепочку одинаковых элементов в массиве и выведет значение элемента и длину этой цепочки.

avatar
ответил 3 месяца назад

Ваш ответ

Вопросы по теме