编程实现: 有一块矩形土地被划分成 n 行 m 列的网格,每个网格生长一种植物。如果相邻(上、下、左、右)网格生长的植物相同,那么这些网格的植物归为同一片植物林;如果一个网格与相邻网格生长的植物都不同,那么该网格的植物单独为一片植物林。 例如:n = 3,m = 4;3 行 4 列的网格生长的植物如下: 一共有 5 片植物林(已用不同颜色的线条圈出),如下图所示: 给定 n 行 m 列的网格中生长的植物,请找出一共有多少片植物林。 输入描述: 第一行输入两个整数 n、m(1≤n、m≤100),表示这块矩形土地被划分成的网格行数和列数,整数之间以一个空格隔开; 接下来输入 n 行,每行 m 个整数(1≤整数≤10000),表示每个网格的植物,不同的整数表示不同的植物,相同的整数表示相同的植物,整数之间以一个空格隔开。 输出描述: 输出一个整数,表示这块矩形土地一共有多少片植物林。 样例输入: 3 4 1 2 2 1 1 1 2 1 3 3 3 2 样例输出: 5


正确答案:4连通同值格子求连通块数。DFS/BFS染色计数:遍历每个未访问格子,值相同则向四周扩展,连通块数+1。
答案解析
BFS 遍历网格,对每个未访问点启动搜索,标记连通区域。
相邻且植物相同的点属于同一连通块。
连通块数量即为答案。
试卷来源:202410(第16届)蓝桥杯Python编程青少组(选拔赛_中/高级)真题