С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 29.12.2022
Сообщений: 9

Никак не удаётся выполнить задачу из контеста Тинькофф

29.12.2022, 19:07. Показов 5354. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые профессионалы.
Прошу у вас помощи в решении одной интересной задачи контеста Тинькофф, не могу никак понять, как к ней подступиться.
Вот собственно и сама задача:
Дано поле 4×4 и последовательность кирпичиков, представляющих из себя прямоугольники либо 2×1 либо 1×2. Вам нужно в порядке последовательности ставить кирпичики на поле, причем если какой-то столбец или строка целиком заняты, то все клетки этого столбца или строки освобождаются (иногда это может означать, что от кирпичика 2 ×1 на поле останется только его половина). Ставить кирпичики поверх тех, которые сейчас находятся на доске, нельзя.

Формат входных данных
Последовательность кирпичиков подается на вход как единственная строка ss, состоящая из нулей и единиц. Ноль означает вертикальный кирпичик, единица — горизонтальный. В последовательности не больше 1000 элементов.

Формат выходных данных
Для каждого кирпичика в отдельной строке выведите два натуральных числа r, c,1≤r, c≤4, обозначающие координаты минимальных строки и столбца, пересекающихся с ним.

Ввод
010

Вывод
1 1
1 2
1 4

Насколько я понял, нужен двумерный массив:
int [] [] array = new int[4][4];
Но я не могу понять как заполнить его прямоугольниками, и как получать координаты.
Буду очень признателен за любую помощь.
И пользуясь случаем, поздравляю всех с наступающими праздниками, и желаю мира, добра, счастья, любви и всего самого наилучшего.
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2022, 19:07
Ответы с готовыми решениями:

Ошибка: не удается выполнить задачу "GenerateResource", поскольку MSBuild не удается создать сервер задач
Занимаюсь переделкой своих проектов из VB6 в VB.NET, заодно и изучаю последний. Работаю в Visual Studio 2013, Win8.1, x64. До...

Microsoft Visual Studio. Не удается выполнить команду из-за следующей ошибки: Не удается найти указанный файл
Всем здрасьте. Вот скачал MVS и возникла проблема. При запуске откладки возникает ошибка и меня переносит Параметры(При этом никаких...

Никак не могу сделать задачу
Помогите пожалуйста с задачей: http://www.e-olymp.com/ru/problems/2302. Код не нужен, нужен метод.

6
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
30.12.2022, 23:06
Что значит: "ставить кирпичики поверх тех, которые сейчас находятся на доске, нельзя", и "если какой-то столбец целиком заняты, то все клетки этого столбца освобождаются "?
0
2 / 2 / 0
Регистрация: 29.12.2022
Сообщений: 9
31.12.2022, 01:15  [ТС]
Что значит: "ставить кирпичики поверх тех, которые сейчас находятся на доске, нельзя", и "если какой-то столбец целиком заняты, то все клетки этого столбца освобождаются "?
Вот пример того, как выглядит заполнение строки массива кирпичиком
Миниатюры
Никак не удаётся выполнить задачу из контеста Тинькофф  
1
2 / 2 / 0
Регистрация: 29.12.2022
Сообщений: 9
31.12.2022, 01:21  [ТС]
vcrop,
Вот пример того, что должно получиться.
Если строка полностью заполнена, она обнуляется, при этом часть некоторых кирпичиков может остаться, и мы не можем заполнять эти места.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
31.12.2022, 13:49
Цитата Сообщение от vcrop Посмотреть сообщение
Что значит: "ставить кирпичики поверх тех, которые сейчас находятся на доске, нельзя", и "если какой-то столбец целиком заняты, то все клетки этого столбца освобождаются "?
Тетрис же!
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
31.12.2022, 16:02
Лучший ответ Сообщение было отмечено Yurgasha как решение

Решение

Я бы тут что-то типа гамильтонова цикла сделал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] arr0 = {"1 1", "3 1"}, arr1 = {"1 3", "2 3", "3 3", "4 3"};
        int i0, i1 = i0 = -1;
        StringBuilder sb = new StringBuilder();
        for (char s : in.nextLine().toCharArray()) {
            if (s == '0') {
                sb.append(arr0[i0 = ++i0 % arr0.length]).append(System.lineSeparator());
            } else if (s == '1') {
                sb.append(arr1[i1 = ++i1 % arr1.length]).append(System.lineSeparator());
            }
        }
        System.out.println(sb);
    }
}
Цитата Сообщение от vcrop Посмотреть сообщение
ставить кирпичики поверх тех
Тут имеется ввиду, что один кирпич не может занимать ту область, что уже занята другим кирпичом.
2
2 / 2 / 0
Регистрация: 29.12.2022
Сообщений: 9
31.12.2022, 16:40  [ТС]
Coffeini, спасибо Вам огромное!!!
Желаю Вам, от чистого сердца, мира, добра, тепла, и всего самого наилучшего.
Задача решена, и как же изящно.
Безусловно, мне ещё расти и расти, до Вашего уровня.
Ещё раз, огромное Вам спасибо, с Новым Годом!!!

Добавлено через 2 минуты
Цитата Сообщение от Coffeini Посмотреть сообщение
Я бы тут что-то типа гамильтонова цикла сделал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] arr0 = {"1 1", "3 1"}, arr1 = {"1 3", "2 3", "3 3", "4 3"};
        int i0, i1 = i0 = -1;
        StringBuilder sb = new StringBuilder();
        for (char s : in.nextLine().toCharArray()) {
            if (s == '0') {
                sb.append(arr0[i0 = ++i0 % arr0.length]).append(System.lineSeparator());
            } else if (s == '1') {
                sb.append(arr1[i1 = ++i1 % arr1.length]).append(System.lineSeparator());
            }
        }
        System.out.println(sb);
    }
}
Тут имеется ввиду, что один кирпич не может занимать ту область, что уже занята другим кирпичом.
Coffeini, спасибо Вам огромное!!!
Желаю Вам, от чистого сердца, мира, добра, тепла, и всего самого наилучшего.
Задача решена, и как же изящно.
Безусловно, мне ещё расти и расти, до Вашего уровня.
Ещё раз, огромное Вам спасибо, с Новым Годом!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.12.2022, 16:40
Помогаю со студенческими работами здесь

никак не могу понять задачу
Задали действительную квадратную матрицу A размером N*M. Найти сумму елементов главной и сторонней диагонали

Никак не удается настроить IntersectionObserver
new IntersectionObserver((en, obs) => { console.log(i); console.log(e); }, {rootMargin: '0% 0% 10%...

Не могу вообще никак побороть задачу
////////////////////////////////////////////////////////////////////////////// //3. ...

Никак не удается справиться с модальным окном
В макете http://fh7929mi.bget.ru/catalog/26.html имеются два модальных окна, всплывающих по клику на соответствующую ссылку. Но чтобы...

Никак не удается активировать Windows 10 Pro
Пытался активировать с KMS. потом пробовал путем введения в командной строке комбинаций: slmgr /ipk slmgr /skms slmgr /ato ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru