Python
Помогите с задачей, никак не могу понять, как именно писать код
Вводится массив целых чисел. Найти максимальное кол-во ненулевых элементов, расположенных между нулевыми элементами массива
a = [i for i, v in enumerate(input().split()) if int(v) == 0]
if len(a) < 2: print('Недостаточно нулевых элементов')
else: print(max(a[i] - a[i - 1] - 1 for i in range(1, len(a))))
Вот пример кода для решения данной задачи на языке Python:
# Вводим массив целых чисел
arr = list(map(int, input().split()))
# Инициализируем переменные для хранения индексов нулевых элементов
left_zero_index = -1
right_zero_index = len(arr)
# Инициализируем переменную для хранения максимального кол-ва ненулевых элементов
max_nonzero_count = 0
# Проходим по массиву и ищем нулевые элементы
for i in range(len(arr)):
if arr[i] == 0:
# Если это первый нулевой элемент, то сохраняем его индекс в left_zero_index
if left_zero_index == -1:
left_zero_index = i
# Если это не первый нулевой элемент, то считаем кол-во ненулевых элементов между ним и предыдущим нулевым элементом
else:
nonzero_count = i - left_zero_index - 1
# Если кол-во ненулевых элементов больше максимального, то обновляем максимальное значение
if nonzero_count > max_nonzero_count:
max_nonzero_count = nonzero_count
# Сохраняем индекс текущего нулевого элемента в left_zero_index
left_zero_index = i
# Если правый нулевой элемент не найден, то все ненулевые элементы после последнего нулевого элемента являются кандидатами на максимальное количество
if left_zero_index < right_zero_index:
nonzero_count = right_zero_index - left_zero_index - 1
if nonzero_count > max_nonzero_count:
max_nonzero_count = nonzero_count
# Выводим максимальное количество ненулевых элементов
print(max_nonzero_count)
Пример входных данных и соответствующего вывода:
Входные данные:
1 0 2 3 0 0 4 5
Вывод:
2
Входные данные:
1 2 3 0 0 0 4 5
Вывод:
0
Входные данные:
0 1 0 2 0 0 3 4
Вывод:
1
Надеюсь, это поможет!
# Вводим массив целых чисел
arr = list(map(int, input().split()))
# Инициализируем переменные для хранения индексов нулевых элементов
left_zero_index = -1
right_zero_index = len(arr)
# Инициализируем переменную для хранения максимального кол-ва ненулевых элементов
max_nonzero_count = 0
# Проходим по массиву и ищем нулевые элементы
for i in range(len(arr)):
if arr[i] == 0:
# Если это первый нулевой элемент, то сохраняем его индекс в left_zero_index
if left_zero_index == -1:
left_zero_index = i
# Если это не первый нулевой элемент, то считаем кол-во ненулевых элементов между ним и предыдущим нулевым элементом
else:
nonzero_count = i - left_zero_index - 1
# Если кол-во ненулевых элементов больше максимального, то обновляем максимальное значение
if nonzero_count > max_nonzero_count:
max_nonzero_count = nonzero_count
# Сохраняем индекс текущего нулевого элемента в left_zero_index
left_zero_index = i
# Если правый нулевой элемент не найден, то все ненулевые элементы после последнего нулевого элемента являются кандидатами на максимальное количество
if left_zero_index < right_zero_index:
nonzero_count = right_zero_index - left_zero_index - 1
if nonzero_count > max_nonzero_count:
max_nonzero_count = nonzero_count
# Выводим максимальное количество ненулевых элементов
print(max_nonzero_count)
Пример входных данных и соответствующего вывода:
Входные данные:
1 0 2 3 0 0 4 5
Вывод:
2
Входные данные:
1 2 3 0 0 0 4 5
Вывод:
0
Входные данные:
0 1 0 2 0 0 3 4
Вывод:
1
Надеюсь, это поможет!
Создаем массив и заполняем его числами.
Например:
int[] arr = new int[10];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[4] = 0;
arr[5] = 4;
arr[6] = 5;
arr[7] = 0;
arr[9] = 6;
Находим индексы нулевых элементов. Запишем их в список indexes.
List<int> indexes = new List<int>();
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == 0)
indexes.Add(i);
}
Обнулим счетчик ненулевых элементов.
int maxCount = 0;
Пройдем массив по индексам нулей.
for (int i = 0; i < indexes.Count - 1; i++)
{
int count = 1;
for (int j = indexes[i] + 1; j < indexes[i + 1]; j++)
{
if (arr[j] != 0)
count++;
}
maxCount = Math.Max(maxCount, count);
}
Выведем результат.
Console.WriteLine(maxCount);
В нашем примере выведется 3.
Например:
int[] arr = new int[10];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[4] = 0;
arr[5] = 4;
arr[6] = 5;
arr[7] = 0;
arr[9] = 6;
Находим индексы нулевых элементов. Запишем их в список indexes.
List<int> indexes = new List<int>();
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == 0)
indexes.Add(i);
}
Обнулим счетчик ненулевых элементов.
int maxCount = 0;
Пройдем массив по индексам нулей.
for (int i = 0; i < indexes.Count - 1; i++)
{
int count = 1;
for (int j = indexes[i] + 1; j < indexes[i + 1]; j++)
{
if (arr[j] != 0)
count++;
}
maxCount = Math.Max(maxCount, count);
}
Выведем результат.
Console.WriteLine(maxCount);
В нашем примере выведется 3.
Похожие вопросы
- Никак не могу понять как поступить =)
- Что такое "параметры функций" в Пайтоне? Я никак не могу понять
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.
- Как научится хорошо писать код?
- Питон не могу понять код
- Как научиться решать задачи на деление и остаток в Python? Не могу понять принцип решения. Примеры задач:
- Можете помочь с задачей на Python.
- Помогите понять г*вно ли код? Необходимо написать программу, которая определяет число просто или составное.
- Помогите поэтапно решить задачу из ЕГЭ по информатике. Нужно именно разобраться, как это решается и что в итоге выйдет
- Питон простенький код не могу понять в чем проблема нужно подсчитать кол во комнат площадью 9.2 кв м