编程题
### 问题描述 小齐在做了一场吃水果的梦后,发现自己置身于一个迷宫中。迷宫是一个 $N \times M$ 的方格网格。她从左上角的方格开始,想要走到右下角的方格。当小齐站在一个方格上时,她可以向上、下、左、右中的任意方向移动。 然而,每个方格都有颜色,而不同的颜色具有不同的属性,这让小齐感到头疼: 如果一个方格是红色,则无法通过。 如果一个方格是粉色,则可以正常行走。 如果一个方格是橙色,则可以正常行走,但会让小齐身上散发出橙子的味道。 如果一个方格是蓝色,则包含食人鱼,只有当小齐身上有橙子的味道时,食人鱼才会让她通过。 如果一个方格是紫色,则小齐会向该方向滑动到下一个方格(除非她无法穿越)。如果下一个方格仍为紫色,则小齐会一直滑动,直到着陆在一个非紫色方格上或撞到无法穿越的方格。紫色方格还会消除小齐身上的味道。 请帮助小齐以尽可能少的移动次数穿越迷宫。 ### 输入格式 第一行包含两个整数 $N$ 和 $M$,表示迷宫的行数和列数。 接下来的 $N$ 行,每行包含 $M$ 个整数,表示迷宫的布局: 整数 $0$ 表示红色方格。 整数 $1$ 表示粉色方格。 整数 $2$ 表示橙色方格。 整数 $3$ 表示蓝色方格。 整数 $4$ 表示紫色方格。 左上角和右下角的整数始终为 $1$。 ### 输出格式 输出一个整数,表示小齐穿越迷宫所需的最小移动次数,如果无法穿越则输出 $-1$。 ### 样例输入 ``` 4 4 1 0 2 1 1 1 4 1 1 0 4 0 1 3 1 1 ``` ### 样例输出 ``` 10 ``` ### 评测数据规模 $1 \leq N, M \leq 1,000$。
查看答案
赣ICP备20007335号-2