把这条最短路径还原出来
补全 bfs_path:BFS 时记下每个点的父亲,最后从终点倒着回溯。输出 0 到 4 的路径(用 / 连)。 本节的图:七个点,边 0-1、0-2、1-3、2-4、3-4、5-6;邻接表 G 里每个点的邻居按编号从小到大排。 (本题用
DFS 找到的路有多长
bfs_path 已经写好。补全 dfs_path:钻到底,找到 t 就一路返回 true,没找到要把自己从 path 里弹出来。把两条路的边数拼起来输出(DFS 在前)。 本节的图:七个点,边 0-1、0-2、1-3、2-4、3-4、5-
网格图里的边是什么
把一张网格当成图,两格之间有边的意思是它们【0】。
数岛屿的办法
第 1 步:1 是陆地,0 是海 第 2 步:第 1 块陆地:起一次遍历 第 3 步:第 2 块陆地:起一次遍历 第 4 步:第 3 块陆地:起一次遍历 第 5 步:第 4 块陆地:起一次遍历 第 6 步:起了几次,就有几个岛 1 1 0
洪泛填充在做什么(C++)
洪泛填充(flood fill)做的事情是【0】。
这张网格有几个岛
上下左右相邻算同一个岛。运行下面这段程序,看岛数 / 最大的岛多大 / 陆地总格数: 本节的网格(四行四列,1 是陆地,0 是海):1100 / 1001 / 0010 / 1000。 #include <algorithm>
从左上角洪泛改了几格
从 (0,0) 出发,把连着的 1 全改成 2。运行下面这段程序: 本节的网格(四行四列,1 是陆地,0 是海):1100 / 1001 / 0010 / 1000。 #include <algorithm> #include
数出有几个岛
补全 islands:对每块还没走过的陆地起一次遍历,顺手数出岛的大小。dirs 是允许走的方向。输出四连通下的岛数。 本节的网格(四行四列,1 是陆地,0 是海):1100 / 1001 / 0010 / 1000。 (本题用 g++ -
写一个洪泛填充
补全 flood:从 (si, sj) 出发,把连着的同色格子都改成 nw,返回改了几格。 本节的网格(四行四列,1 是陆地,0 是海):1100 / 1001 / 0010 / 1000。 (本题用 g++ -std=c++17 -O0
四连通和八连通岛数不同
islands 已经写好,D4、D8 也已定义。补全 main:同一张网格跑两遍,把两个岛数拼起来输出(四连通在前)。 本节的网格(四行四列,1 是陆地,0 是海):1100 / 1001 / 0010 / 1000。 (本题用 g++ -