0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20

Найти наборы единиц, которые соприкасаются одной из сторон

26.02.2022, 20:29. Показов 971. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Нужна помощь. Есть матрица с нулями и единицами, нужно найти единицы (с этим нет проблем) и наборы единиц, которые соприкасаются одной из сторон (горизонтально и вертикально).
Пример:
1 1 1 1 1
0 0 0 0 0
0 0 1 1 0
0 0 0 0 0
1 0 1 1 0

Ответ: 4

Вот до что написал, но закончить не могу(
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
example_array = [[1, 1, 1, 1, 1],
                 [0, 0, 0, 0, 0],
                 [0, 0, 1, 1, 0],
                 [1, 0, 1, 1, 0]]
 
 
def replacement(example_array, i, j):
    example_array[i][j] = 0
    if example_array[i][j + 1] == 1:
        replacement(example_array, i, j + 1)
    if example_array[i + 1][j] == 1:
        replacement(example_array, i + 1, j)
 
 
count = 0
for i in range(len(example_array)):
    for j in range(len(example_array[i])):
        if example_array[i][j] == 1:
            count += 1
            replacement(example_array, i, j)
print(count)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2022, 20:29
Ответы с готовыми решениями:

Напечатать всевозможные n-значные наборы из нулей и единиц
Напечатать всевозможные n-значные наборы из нулей и единиц используя рекурсию Добавлено через 9 минут ну или переведите мне на...

В заданном множестве найти такие наборы, которые в сумме будут давать заданное число
Имея k чисел n1,n2,...,nk вывести такие наборы, которые в сумме будут давать N Программа работает с небольшим НО: под каждое...

Найти путь из центра массива к одной из сторон
Сделал прогу находящую путь от левого края массива до правого, но её нужно переделать, но чет туплю как это нормально сделать. Вот задание:...

14
290 / 170 / 92
Регистрация: 21.03.2016
Сообщений: 400
26.02.2022, 21:57
Почему ответ 4, и не понятно что такое наборы единиц?
0
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
27.02.2022, 04:52  [ТС]
Цитата Сообщение от Berbentsev Посмотреть сообщение
Почему ответ 4, и не понятно что такое наборы единиц?
нужно найти единицы и наборы единиц, которые соприкасаются друг с другом одной из сторон

1 1 1 1 1
0 0 0 0 0
0 0 1 1 0
0 0 0 0 0
1 0 1 1 0

Ответ: 4

Вот еще пример:

1 1 1 1 1

0 0 0 0 0

0 0 1 1 0

1 0 1 1 0

Ответ: 3, так как здесь единицы соприкасаются в третей и четвертой строке еще и по вертикали
0
27.02.2022, 07:49

Не по теме:

Реально, одно из самых упоротых заданий, виденных мной на форуме

0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
27.02.2022, 09:16
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def dfs(x, y):
    if a[x][y] == 0:
        return
    a[x][y] = 0
    if x > 0:
        dfs(x - 1, y)
    if x < n - 1:
        dfs(x + 1, y)
    if y > 0:
        dfs(x, y - 1)
    if y < n - 1:
        dfs(x, y + 1)
 
 
n = int(input())
a =[list(map(int, input().split())) for _ in range(n)]
count = 0
for i in range(n):
    for j in range(n):
        if a[i][j] == 1:
            dfs(i, j)
            count += 1
print(count)
Добавлено через 58 секунд

Не по теме:

iSmokeJC, задание то норм. объяснение такое себе...)

1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
27.02.2022, 10:24  [ТС]
Цитата Сообщение от eaa Посмотреть сообщение
def dfs(x, y):
    if a[x][y] == 0:
        return
    a[x][y] = 0
    if x > 0:
        dfs(x - 1, y)
    if x < n - 1:
        dfs(x + 1, y)
    if y > 0:
        dfs(x, y - 1)
    if y < n - 1:
        dfs(x, y + 1)
n = int(input())
a =[list(map(int, input().split())) for _ in range(n)]
count = 0
for i in range(n):
    for j in range(n):
        if a[i][j] == 1:
            dfs(i, j)
            count += 1
print(count)
А int зачем в инпуте? Чет я запутался. list же передаю. Падает ошибка:
n = int(input())
ValueError: invalid literal for int() with base 10: '[[1, 1, 1, 1, 1], [0, 0, 0, 0, 0], [0, 0, 1, 1, 0], [1, 0, 1, 1, 0]]'
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
27.02.2022, 14:56
Цитата Сообщение от 308 Посмотреть сообщение
Ответ: 4
- почему? Я бы считал, что ответ 6 (4 пары в первой строке и еще 2 в третьей и пятой)
0
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
27.02.2022, 15:06  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- почему? Я бы считал, что ответ 6 (4 пары в первой строке и еще 2 в третьей и пятой)
не, по условию все единицы которые соприкасаются друг с другом по горизонтали и вертикали - это +1 к счетчику
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
27.02.2022, 15:52
Цитата Сообщение от 308 Посмотреть сообщение
по горизонтали и вертикали
- "и" или "или"? Если "и", то ни одной нет - все только по горизонтали.
0
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
27.02.2022, 16:25  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- "и" или "или"? Если "и", то ни одной нет - все только по горизонтали.
Из условия "Точкой считается такой набор единиц, которые соприкасаются одной из сторон." и приведены примеры с ответами которые я тут оставил
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
27.02.2022, 16:45
Цитата Сообщение от 308 Посмотреть сообщение
Ответ: 3, так как здесь единицы соприкасаются в третей и четвертой строке еще и по вертикали
- в этом случае должно быть больше 4, а у тебя - 3. Ты либо не понял условие, либо задача идиотская некорректная изначально. Сфотографируй условие и выложи - иначе вряд ли кто поможет.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
27.02.2022, 16:47
308, я же тебе написал решение. ввод перепиши как тебе нужно и все.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.02.2022, 16:47
Catstail, я тоже не сразу догнал. Если в матрице-сетке закрасить единичные клеточки, то нужно посчитать - сколько "фрагментов" получилось
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
27.02.2022, 17:10  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- в этом случае должно быть больше 4, а у тебя - 3. Ты либо не понял условие, либо задача идиотская некорректная изначально. Сфотографируй условие и выложи - иначе вряд ли кто поможет.
https://ibb.co/6gBy2fH
на скрине пример этот
1 1 1 1 1
0 0 0 0 0
0 0 1 1 0
1 0 1 1 0
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
27.02.2022, 20:23
iSmokeJC, так это же совсем другое дело. Нда...
308, если ты так пересказываешь условие, то ты напрограммируешь...

Вот одно из возможных решений:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def task(arr):
    def mark(row,col,arr):
        if (row<0) or (col<0):
            return
        if (row >= len(arr)) or (col >= len(arr[0])):
            return
        if arr[row][col]==1:
            arr[row][col]=2
            mark(row+1,col,arr)
            mark(row-1,col,arr)
            mark(row,col+1,arr)
            mark(row,col-1,arr)
    count=0
    for r in range(len(arr)):
        for c in range(len(arr[0])):
            if arr[r][c]==1:
                mark(r,c,arr)
                count+=1
    return count
 
n = int(input())
a =[list(map(int, input().split())) for _ in range(n)]
print(task(a))
Диалог:

5
1 1 1 1 1
0 0 0 0 0
0 0 1 1 0
0 0 0 0 0
1 0 1 1 0

Ответ:
4
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2022, 20:23
Помогаю со студенческими работами здесь

Найти все возможные наборы цифр(одна буква-одна цифра), которые удовлетворяют уравнению SP4 + APD = DBAB
Нужна помощь в решении следующей задачи: Найти все возможные наборы цифр(одна буква-одна цифра), которые удовлетворяют уравнению SP4 +...

Найти длину стороны прямоугольника, если задана длина одной из его сторон
1.Длины сторон первого прямоугольника А и В, его площадь в 6 раз меньше площади второго прямоугольника. Найти длину стороны второго...

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

Найти длину стороны второго прямоугольника, если длина одной из его сторон равна С
Помогите пожалуйста решить задачи: 1.Длины сторон первого прямоугольника А и В, его площадь в 6 раз меньше площади второго...

Найти длину стороны второго прямоугольника, если длина одной из его сторон равна C
Помогите написать программу №13 Длины сторон первого прямоугольника A и B, его площадь в 6 раз меньше площади второго прямоугольника....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru