![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Всем доброго времени суток, уважаемые эксперты. Передо мной стоит задача написать алгоритм решения головоломки Акари (Akari LightUp Фонари).
Правила игры. Загружается поле размера 7х7 или 10х10. Оно поделено на клетки. Есть пустые клетки, а есть клетки со стенками. Цифра внутри стены показывает сколько стоит вокруг нее фонарей (по вертикали и горизонтали). По диагонали фонари не учитываются цифрой. Каждый фонарь засвечивает вокруг себя прямую линию вниз, влево, вправо и вверх до того места где находится конец поля, другая лампа или стена. Задача состоит в том чтобы осветить все поле, расставив требуемое количество фонарей вокруг стен с цифрами. Помогите реализовать (продумать) алгоритм решения. Заранее всем спасибо за советы. Я создал динамический массив Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 751
|
![]()
1)
Цитата:
2) В качестве пробы: 3D-массив - это как-то сложновато, бы попробовал 2D-массив байт. Число будет указывать на количество фонарей для стены причем стена это или не стена будет указывать старший бит в байте. Для фонаря нужно, чтобы было какое-то число. Придумайте его, пожалуйста. Расставляем фонари и обозначаем свет от них. Тоже свет можно назначить каким-то числом. Расставляем фонари по алгоритму, который я описал в 1-й части своего сообщения. И потом перемещаем фонари и смотрим как падает свет.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Последний раз редактировалось Cuprum5; 16.06.2017 в 19:53. |
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
т.е. дано поле со стенками-цифрами,
задача расставить фонари? а почему не воспользоваться банальным перебором? решение не укладывается по времени? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
![]()
Вообще-то это всем известный "Минёр".
Почему не взять исходник и не убрать оттуда учет по диагоналям? |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подскажите алгоритм решения | Nickolay0512 | Общие вопросы C/C++ | 12 | 07.10.2014 23:26 |
Алгоритм решения задачи | Amet13 | Помощь студентам | 1 | 21.04.2012 13:16 |
Алгоритм решения задачи | snpccvs | Помощь студентам | 8 | 13.02.2012 22:50 |
Алгоритм решения | Naruto63 | Помощь студентам | 6 | 20.09.2009 22:47 |
Подскажите алгоритм решения | Blad47 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 10.11.2008 19:50 |