Найти номер строки заданной целочисленной матрицы, в которой находится самая длинная серия. Python3
Задача такая: Найти номер строки заданной целочисленной матрицей размером n на m, в которой находится самая длинная серия. Серия - следующие друг за другом совпадающие по значению элементы.
Помогите дописать код пожалуйста. Никак не могу придумать как правильно написать алгоритм
Часть кода:
import random
m, n = map(int, input("Укажи длинну и количество строк матрицы: ").split())
matrix = [[random.randrange(0,10) for y in range(m)] for x in range(n)]
for i in range(n):
print (matrix[i])
Ответы (2 шт):
Автор решения: RomanR
→ Ссылка
import random
def check(m):
'''идет по списку, сравнивает соседние элементы, если следующий больше на 1, то увеличивает счетчик, если нет, то смотрит что лежит во втором счетчике и что в первом.
Если второй счетчик больше, то просто обнуляет первый, если меньше, то присваивает новое значение второму счетчику и обнуляет первый. Возвращает всегда второй'''
counter = 1
counter2 = 1
for i in range(len(m)-1):
if m[i + 1] == m[i] + 1:
counter += 1
else:
if counter >= counter2:
counter2 = counter
counter = 1
if counter > counter2:
counter2 = counter
return counter2
m, n = map(int, input("Укажи длинну и количество строк матрицы: ").split())
matrix = [[random.randrange(0,10) for y in range(m)] for x in range(n)]
for i in range(n):
print (matrix[i])
#применяем функцию ко всем строкам матрицы и ищем строку, с наибольшим значением
for i in range (n):
maxLen = 0
line = ''
temp = check(matrix[i])
if temp > maxLen:
maxLen = i
print(temp)
Автор решения: TheDesireToBelieve
→ Ссылка
Дописал
list_k = []
for row in matrix :
k_max = 0
k = 1
for i in range(m-1) :
if row[i] == row[i+1] :
k += 1
else :
k_max = max(k,k_max)
k = 1
list_k.append(k_max)
print(list_k.index(max(list_k))+1)