|
|
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
Положим есть доска NxN клеток. Есть 2 фишки, ф1 и ф2, которые изначально находятся в произвольных клетках. . За один ход обе фишки могут переместиться на одну клетку в одном направлении. Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. Если упрется в борт, так же остается на месте. Есть две лунки, л1 и л2, которые тоже находятся в произвольных клетках. Нужно загнать соответствующую фишку в соответствующую лунку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 14:12 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
Тривиально до жути. Сперва гонишь одну фишку, не обращая внимания на вторую. Загнав её в лунку, гонишь вторую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 14:51 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, "Волной" ищи пути и гони себе хоть 10 фишек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:37 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
DarkMasterЕвгенийВ, "Волной" ищи пути и гони себе хоть 10 фишек. Какой волной? Как искать? Хоть название алгоритма? Akina Тривиально до жути. Сперва гонишь одну фишку, не обращая внимания на вторую. Загнав её в лунку, гонишь вторую. Надо что бы вторая не попала в лунку для первой. Вообще их может быть 100500. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 17:48 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
локальные минимумы будут? какой должен быть ход, рандомный или надо именно путь найти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 19:08 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВКак решать такие задачи? Очень полезно чтение Вирта. "Структуры данных + алгоритмы = программы". То есть, в начале выбирается представление данных - доски и позиции фишек на ней, обозначение стен, обозначние конечных клеток и т.н. Записи, массивы из записей и др. Потом алгоритмы. Процедура "Один ход" - в котором задается направление движения, и в процедуре делаются соответствующие изменения данных. Процедура "Движение к цели", которая использует процедуру "Один Ход". И т.д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 19:36 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВКакой волной? Как искать? Хоть название алгоритма? Линейное программирование, теория графов, поиск кратчайшего пути. При поиске пути чужую лунку ты можешь временно обнести стенами. Проблемой может быть если фишки взаимно блокируют единственный путь. Что делать тогда - я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 20:23 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
AkinaСперва гонишь одну фишку, не обращая внимания на вторую. Загнав её в лунку, гонишь вторую может не получиться - могут мешать друг-другу. можно в этом случае отодвинуть попробовать, но для N фишек это будет сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 20:33 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
Иммануил Кантотодвинуть попробовать рекурсивно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 20:36 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
Но вообще-то в задаче не указано, что фишки не могут одновременно быть в одной клетке ;) Условие не очень, конечно... "Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. " Не может ходить через забор, и все. Какой же это алгоритм, который задаст направление через забор, чтобы фишка не могла перейти и пропустила ход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2016, 12:53 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
S.G.Условие не очень, конечно... "Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. " Не может ходить через забор, и все. Какой же это алгоритм, который задаст направление через забор, чтобы фишка не могла перейти и пропустила ход? Вообще-то условие нормальное, если расстановка стен заранее неизвестна. ТС, к сожалению, экономит на словах, а хорошо бы всё же уточнить такого рода вещи. Скажем, то, что фишки изначально находятся в произвольных клетках, означает, что координаты этих клеток задаются при старте, или мы знаем только то, что фишки находятся на доске? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 11:19 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
yuglS.G.Условие не очень, конечно... "Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. " Не может ходить через забор, и все. Какой же это алгоритм, который задаст направление через забор, чтобы фишка не могла перейти и пропустила ход? Вообще-то условие нормальное, если расстановка стен заранее неизвестна. ТС, к сожалению, экономит на словах, а хорошо бы всё же уточнить такого рода вещи. Скажем, то, что фишки изначально находятся в произвольных клетках, означает, что координаты этих клеток задаются при старте, или мы знаем только то, что фишки находятся на доске? Координаты задаются на старте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 18:01 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
S.G.в задаче не указано, что фишки не могут одновременно быть в одной клетке То же касается и лунок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2016, 20:16 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВКоординаты задаются на старте. Если все координаты задаются при старте, то задача становится тривиальной. Формируешь из начального положения фишек множество возможных положений после нулевого хода - ФФ(0). Затем из него формируешь множество возможных положений после первого хода ФФ(1). И т.д. Очевидно, что множество ФФ(n) входит в ФФ(n+1). Процесс продолжаешь до тех пор, пока не выполнится одно из двух условий: 1) фишки попали в лунки (клетки лунок попали нужным образом в множество положений после некоторого хода) 2) множество положений не увеличилось после очередного хода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 08:47 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
yugl, Все осложняется тем, что фишек >=2. Сначала можем загнать одну, потом другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 10:56 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ , неверно. Состояние, когда загнана одна (или несколько, но не все) - это некое промежуточное ФФ(n). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 11:16 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
Иммануил КантИммануил Кантотодвинуть попробовать рекурсивно + сортировкой, на каждой итерации, верхний элемент списка определяет параметры следующего рекурсивного вызова. алгоритм сортировки определяет расстояние до препядствий и лунки. Сортировка должа выбирать ход таким образом что бы путь находился дальше от препядствия и ближе к лунке из других возможных вариантов ходов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 12:18 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВyugl, Все осложняется тем, что фишек >=2. Сначала можем загнать одну, потом другую. Алгоритм практически универсален, от числа фишек не зависит, собственно, необходимо только определить правила получения новых возможных положений из текущего. Единственный (но серьезный) недостаток алгоритма - быстрый рост числа возможных положений при росте числа фишек. Альтернатива - построить какое-нибудь топологическое описание доски. Самое простое - хранить для каждой пары клеток (старт, финиш) направление, по которому надо идти фишке (или признак, что финиш недоступен). Такую штуку тоже очень просто сделать. Но тут уже необходимо допущение, что фишки (лунки) не мешают движению других фишек, поскольку топоописание будет статичным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 15:01 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
yuglЕдинственный (но серьезный) недостаток алгоритма - быстрый рост числа возможных положений при росте числа фишек. Почему? Они всегда двигаются синхронно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 15:25 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВПочему? Они всегда двигаются синхронно.Да потому что каждому состоянию на ход N соответствует 4 состояния на ход N+1. Кроме случая, когда ни одна из фишек не сдвинется при попытке движения в некоем направлении. А 4 в степени N, знаете ли, растёт весьма угрожающими темпами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 15:53 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
Я тут не дочитал, видимо:ЕвгенийВ За один ход обе фишки могут переместиться на одну клетку в одном направлении. Что это означает, прямо как и написано, что все (обе) фишки, движутся либо направо, либо вверх и т.д, синхронно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2016, 20:00 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
AkinaДа потому что каждому состоянию на ход N соответствует 4 состояния на ход N+1. Кроме случая, когда ни одна из фишек не сдвинется при попытке движения в некоем направлении. А 4 в степени N, знаете ли, растёт весьма угрожающими темпами... Но это лучше, чем если бы они могли двигаться разно направленно. S.G.Что это означает, прямо как и написано, что все (обе) фишки, движутся либо направо, либо вверх и т.д, синхронно? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2016, 11:56 |
|
||
|
Как решать такие задачи?
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, Если совсем тапорно, то можно перебором ходов или вам надо к примеру за минимальное число ходов?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2016, 17:38 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39169898&tid=1340702]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 395ms |

| 0 / 0 |
