Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
:[Slash]:
1 / 1 / 0
Регистрация: 24.06.2009
Сообщений: 5
#1

Лабиринт - C++

24.06.2009, 11:11. Просмотров 2610. Ответов 8
Метки нет (Все метки)

Народ помогите! есть задание:
Лабиринт представляет собой квадрат, состоящий из NxN сегментов. Каждый из сегментов может быть либо пустым, либо заполненным камнем. Гарантируется, что левый верхний и правый нижний сегменты пусты. Лабиринт обнесен сверху, снизу, слева и справа стенами, оставляющими свободными только левый верхний и правый нижний углы. Требуется покрасить стены лабиринта, ВИДИМЫЕ изнутри. Рассчитать количество краски, необходимой для этого.

как можно посчитать все эти стенки???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2009, 11:11     Лабиринт
Посмотрите здесь:

игра лабиринт C++
Двумерный лабиринт C++
C++ Лабиринт
Лабиринт C++
C++ лабиринт
Уникальный лабиринт C++
Лабиринт с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17290 / 5538 / 347
Регистрация: 30.03.2009
Сообщений: 15,080
Записей в блоге: 26
24.06.2009, 11:28     Лабиринт #2
А что значит видимые изнутри? Т.е. существует хотя бы одна точка внутри, откуда стена видна?

А так берёшь все незанятые точки внутри лабиринта и идёшь от точки до четырёх сторон. Если натыкаешься на занятую точку, то отваливаешь. Если в итоге дошёл до края лабиринта - значит соотвествующий кусок стены видимый. Ну и надо учесть, что в четырёх местах стены нет (если я условие правильно понял)
:[Slash]:
1 / 1 / 0
Регистрация: 24.06.2009
Сообщений: 5
24.06.2009, 11:35  [ТС]     Лабиринт #3
011111
100101
100111
110001
111110
вот пример лабиринта!! 0вверху слева вход, внизу снизу выход! мне надо наити грубо говоря всестенки, кроме тех, что около выделеного 0! т.е те стенки мы не видим

Добавлено через 1 минуту 36 секунд
Цитата Сообщение от Evg Посмотреть сообщение
А так берёшь все незанятые точки внутри лабиринта и идёшь от точки до четырёх сторон. Если натыкаешься на занятую точку, то отваливаешь. Если в итоге дошёл до края лабиринта - значит соотвествующий кусок стены видимый. Ну и надо учесть, что в четырёх местах стены нет (если я условие правильно понял)
я так щас и делаю, проблема в том, что идя так "по стенкам" когда я нахожу выход, программа дальше не считает..
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
24.06.2009, 11:44     Лабиринт #4
Цитата Сообщение от :[Slash
я так щас и делаю, проблема в том, что идя так "по стенкам" когда я нахожу выход, программа дальше не считает
а ты не выход ищи, а вход.
точку, откуда начал, с начальным направлением.
только вариант "по стенкам" не годится.
как я понял условия, возможны "внутренние кольца", до которых "по стенке" дойти нельзя.
:[Slash]:
1 / 1 / 0
Регистрация: 24.06.2009
Сообщений: 5
24.06.2009, 11:51  [ТС]     Лабиринт #5
ну как раз такие кольца нам считать и не нада...
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
24.06.2009, 11:56     Лабиринт #6
Цитата Сообщение от :[Slash
:;201696]ну как раз такие кольца нам считать и не нада

0111111111
0000000001
1000000001
1001111001
1001111001
1000000001
1000000001
1111111100
хочешь сказать, что внутренний блок в этом примере окрашивать не надо??
:[Slash]:
1 / 1 / 0
Регистрация: 24.06.2009
Сообщений: 5
24.06.2009, 12:04  [ТС]     Лабиринт #7
нужно, я просто не правильно тебя понял...
Evg
Эксперт CАвтор FAQ
17290 / 5538 / 347
Регистрация: 30.03.2009
Сообщений: 15,080
Записей в блоге: 26
24.06.2009, 12:09     Лабиринт #8
Э... а я как-то подругому задачу понял. Там фигурируют два слова "камень" и "стена" и я как-то воспринял, что стена это нечто, стоящее снаружи по периметру лабиринта. Я так понимаю, что это не так.

Тогда смысл задачи в том, чтобы покрасить стороны камней, которые соседствуют с пустыми участками, в которые момжно попасть по пусти из входа в выход. Так чтоли?

Тогда делается так. Ищем все доступные пустые клетки и раскрашиваем стены, находящиеся по соседству

Для поиска доступных клеток смотри эту тему. Надо найти "острова" на квадратной матрице. Т.е. фактически тебе надо найти один остров, начинающийся в левом верхнем углу. По сравнению с задачей по ссылке изменения такие: 0 считается островом (а не 1), при стриании вместо нуля надо вписывать, например, 2. После этого все двойки будут соотвествовать доступным клеткам лабиринта
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2009, 12:17     Лабиринт
Еще ссылки по теме:

Лабиринт с телепортами на C++ C++
Лабиринт C++
Лабиринт C++ C++
Лабиринт C++
C++ лабиринт

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

Или воспользуйтесь поиском по форуму:
:[Slash]:
1 / 1 / 0
Регистрация: 24.06.2009
Сообщений: 5
24.06.2009, 12:17  [ТС]     Лабиринт #9
Ооо... спасибо!!! то что надо!!
Yandex
Объявления
24.06.2009, 12:17     Лабиринт
Ответ Создать тему
Опции темы

Текущее время: 19:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru