![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| fuckingniger |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
не могу никак разобраться. есть задание:
Цель работы - исследование класса задач, решаемых полным перебором и методов их решения Указания. Используя списковое представление графов и рекурсивные функции, разработать программу, находящую решение, в соответствии с приведенными ниже вариантами. Не разрешается использовать операторы цикла Тетрада – квадрат, на каждой стороне которого написано некоторое число. Имеется бесконечное количество тетрад нескольких заданных типов. Необходимо вывести все возможные варианты покрытия прямоугольной области заданного размера, избегая повторений. Основное условие – тетрады могут соприкасаться только теми гранями, на которых написаны одинаковые числа. Вот искал-искал я задачу про эти тэтрады в интернете - не нашёл.Я так понимаю это типичная задача типа ханойских башен. Может кто знает??? |
|||
|
||||
| Silent |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: нет Всего: 9 |
А где задача-то, ее условия?
Если задача звучит как "на прямоугольном поле nxm найти все замощения тетрадами из множества S", то это просто. Вариант первый - перебираем n*m ячеек, как только заполнили до конца - один из вариантов найден
Ну и формат входных данных: Первая строка N, M, K В последующих K строках - четыре числа, описывающие тетраду (верхняя, левая, нижняя, правая границы). Пример входного файла in.txt:
Лучше организовать не перебор по тетрадам, а сразу по столбцам, предварительно, конечно, сгенерировав возможные столбцы и их сочетаемость. P.S. Кстати, просмотрел еще одно условие - "избегая повторений". Но оно легко делается тем, что из исходного множества S (или массива t в коде) убираются одинаковые тетрады |
||||
|
|||||
| fuckingniger |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
о_О . Это надо переварить.
Это полное условие задания, которое дано. Добавлено через 3 минуты и 20 секунд я запустил программу, создав in.txt Но в out выводится либо 1 либо 0 - что это значит? |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: нет Всего: 9 |
Каким образом ты получаешь 0? на приведенном мной тесте существует лишь одна расстановка:
| 0 | 6 | |2 4|3 5| | 2 | 4 | ------ | 2 | 4 | |4 8|8 11| | 7 | 10 | Или ты не понял формата in.txt? Алгоритм просто пытается замостить поле, перебирая на текущую позицию все тетрады, тетрада подходит - позиция смещается, и т.д. (никак не мог вставить картинку для визуального представления ситуации, накорябал псевдографикой, как сумел)) ) Это сообщение отредактировал(а) Silent - 2.3.2011, 17:15 |
|||
|
||||
| fuckingniger |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
ну как может быть что я не понял формат). Просто клацаю по файлику)
чтоб добавить картинку сюда необходимо залить её на какой - нить хостинг.например rghost.ru вставляете сссылку - выделяете и клацаете pic сверху , слева от "цвет" очень хочу увидеть картинку плз |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: нет Всего: 9 |
Есть 4 тетрады, их можно единственным способом сложить в прямоугольник 2х2:
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Раскладка неправильная - во внутренней верхней вертикальной грани с 2х сторон 2 разных числа (4 и 3)
|
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: нет Всего: 9 |
Да, действительно, просмотрел. Там должны быть два одинаковых числа, сами выберите какие больше нравятся.
fuckingniger, теперь стало понятнее? Если да, то второй вариант решения, чуточку быстрее: 1) генерируем все возможные столбцы 2) из сгенерированных столбцов пытаемся собрать решение, опять же перебором НО, если в качестве ответа надо выводить не варианты решений, а количество, то такое решение (только пункт 2 выполнять не перебором, а динамикой), будет на несколько порядков быстрее, да и верхний потолок гораздо выше. |
|||
|
||||
| fuckingniger |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
Silent напиши пожалуйста, что делает solve и что делает check
и где всё-таки в программе массив двумерный, который показывает замощение. а то я только из двумерных t увидел, а это вроде входные тетрады как я понял. |
|||
|
||||
| fuckingniger |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
+ нельзя использовать оператор цикла
|
|||
|
||||
| fuckingniger |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
в check думаю ошибка
если аргументы равны то нет смысла и уже добавленные тетрады надо как то исключать |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |