P16292 [蓝桥杯 2026 省 Java A 组] 两栖作战

题目描述

小蓝设计了一台两栖作战机甲,可以根据地形自动切换形态,以适应陆地和水域作战。 作战区域是一个 $N \times N$ 的网格。每个格子用字符表示其地形: - `0` 表示陆地; - `1` 表示水域。 小蓝初始位于左上角 $(1,1)$,目标是到达右下角 $(N,N)$。 每次行动时,小蓝可以向上、下、左、右四个方向中的一个相邻格子移动,但不能离开网格范围。 如果移动后的格子与当前格子的地形不同,机甲会自动切换一次形态;如果两格地形相同,则不需要切换形态。 现在,请你计算:从 $(1,1)$ 移动到 $(N,N)$,最少需要切换多少次形态。

输入格式

第一行包含一个正整数 $N$,表示网格的边长。 接下来 $N$ 行,每行是一个长度为 $N$ 的 01 字符串,表示对应一行的地形。

输出格式

输出一个整数,表示从 $(1,1)$ 到 $(N,N)$ 的最少形态切换次数。

说明/提示

### 【评测用例规模与约定】 对于 $30\%$ 的评测用例,$1 \le N \le 8$; 对于所有的评测用例,$1 \le N \le 5000$。