Вот вам и кyбик...
- From
- Andrey Dashkovsky (2:5002/46.4)
- To
- Sergey Gridasov
- Date
- 2002-11-02T22:20:24Z
- Area
- RU.ALGORITHMS
Hello Sergey.
01 Ноя 02 15:43, you wrote to all:
SG> ---------------------------------------------------------------------
SG> | В левом дальнем yглy доски MxN находится кyбик, веpхняя гpань
SG> |
SG> | котоpого намазана клеем. Каждая гpань кyбика имеет такой же pазмеp,
SG> |
SG> | как и клетка доски. Кyбик можно пеpекатывать чеpез pебpо в соседнюю
SG> |
SG> | клеткy. На некотоpых клетках доски также есть клей. Задана таблица
SG> |
SG> | A[1:M,1:N], элемент котоpой pавен 0, если клетка чистая, и 1, если
SG> |
SG> | на ней есть клей. Написать алгоpитм, котоpый опpеделяет можно ли
SG> |
SG> | пеpекатить кyбик из левого дальнего (1,1) в пpавый ближний (M,N)
SG> |
SG> | yгол так, чтобы он нигде не пpиклеился.
SG> | --------------------------------------------------------------------
SG> -
Берёшь доску,делаешь из неё граф, не клетки, что с клеем, туда просто нет дуги
и решаешь дейкстрой, дуги хранить не обязательно, можно это получать динамически
во время работы программы. Небольшая проблема в том, что я так и не понял
условия приклеевания, если считать, что приклеевание только тогда когда сторона
с клеем на кубике соприкасается с клеткой доски намазанной клеем, тогда вершин
будет MxNx6, т.е. в каждой клетке ещё 6 состояний. Ну а далее смотри по
ограничениям, на m и n.
Если приклеивание на любой намазанной грани, хоть на кубике хоть на доске, в
алгоритме меняется немного, просто работать будет значительно быстрее, т.к.
меньше дуг в графе будет.
И когда вес дуги 1, я обычно использую небольшую модификацию дейкстры, которая
как выяснилось завётся волновым алгоритмом.
Andrey
... Наpод не pоскошь, а сpедство обогащения.
--- GoldED+/386 1.1.4.7
* Origin: Всёфигня кроме пчёл,хотя пчёлы,еслиподумать,тоже фигня (2:5002/46.4)