Привет. Помогите решить задачу.
Дана последовательность натуральных чисел, завершающаяся числом 0. Определите, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.
py.user.next
Нужно две переменные: одна - под максимальное число равных элементов, другая - под текущее число равных элементов. И нужно ещё одну переменную под предыдущий элемент.Берёшь каждый элемент, сравниваешь его с предыдущим и там три ситуации:1) Элемент - ноль. Нужно сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального.2) Элемент - не ноль и равен предыдущему элементу. Увеличить текущее число.3) Элемент - не ноль и не равен предыдущему элементу. Сравнить максимальное число с текущим числом и заменить максимальное на текущее, если текущее больше максимального. Установить текущее число в 1.
i = -1 k = -1 e = 1 max = 1 while i != 0: i = int(input()) if i == k: e += 1 else: if e > max: max = e e = 0 k = i print(max)
>>> def f(seq): ... prev = curn = maxn = 0 ... for e in seq: ... if e == prev: ... curn += 1 ... else: ... if curn > maxn: ... maxn = curn ... curn = 1 ... prev = e ... return maxn ... >>> f([1, 1, 2, 2, 2, 3, 3, 0]) 3 >>>
py.user.nextНо если>>> def f(seq): ... prev = curn = maxn = 0 ... for e in seq: ... if e == prev: ... curn += 1 ... else: ... if curn > maxn: ... maxn = curn ... curn = 1 ... prev = e ... return maxn ... >>> f([1, 1, 2, 2, 2, 3, 3, 0]) 3 >>>
>>> f([1]) 0 >>> f([1,2,2,3,3,3]) 2 >>>
previous = count = max_count = 0 flag_equal = False print("Input numbers. 0 - end:") current = int(input()) if current: count = max_count = 1 previous = current current = int(input()) while current: if current == previous: count += 1 flag_equal = True else: if count > max_count: max_count = count count = 1 flag_equal = False previous = current current = int(input()) if flag_equal and (count > max_count): max_count = count print("Maximum count of equal numbers:", max_count)
prev = -1 curr_rep_len = 0 max_rep_len = 0 element = int(input()) while element != 0: if prev == element: curr_rep_len += 1 else: prev = element max_rep_len = max(max_rep_len, curr_rep_len) curr_rep_len = 1 element = int(input()) max_rep_len = max(max_rep_len, curr_rep_len) print(max_rep_len)
p=int(input()) c=1 b=0 while p!=0: v=int(input()) p,v=v,p if v==p: c+=1 if c>b: b=c if p!=v: c=1 print(b)
Stepan_MУсловие не читал? Там сказано, что последовательность состоит из натуральных чисел (целые числа больше нуля) и заканчивается нулём, и это всегда так. Это предусловие. То есть функция не должна проверять их натуральность или наличие нуля в конце, соблюдение этого условия лежит на вызывающем.
Но если>>> f([1]) 0 >>>
py.user.next
Stepan_M
Но если
>>> f([1]) 0 >>>
Условие не читал? Там сказано, что последовательность состоит из натуральных чисел (целые числа больше нуля) и заканчивается нулём, и это всегда так. Это предусловие. То есть функция не должна проверять их натуральность или наличие нуля в конце, соблюдение этого условия лежит на вызывающем.