为什么要用随机数据对拍

真机题的 check 会用每次现造的随机迷宫、随机网格来测你的程序,这是为了【0】。

开始练习 →

写网格最少几步

场景:实验机上 ~/work/graph/grid.cpp 读一张迷宫('.' 空地、'#' 墙、S 起点、T 终点),要输出 S 到 T 的最少步数,可 bfs 还是空的。 任务:补全 bfs:每步只能上下

开始练习 →

一百五十万行输出限时

场景:~/work/graph/deg.cpp 输出每个点的度数,一行一个。结果是对的,可点数到 150 万时要跑好几秒。 任务:改写 deg.cpp,让 150 万个点在 2 秒内输出完,结果不变。make 编译(-O2),可以用 tim

开始练习 →

修好出队才标记

场景:~/work/graph/bfs.cpp 做 BFS,输出访问顺序和一共入队几次。可访问顺序里有的点出现了好几次,入队次数也比点数多。 任务:修好标记 visited 的时机,让每个点只入队一次。make 编译后用 sample.tx

开始练习 →

修好方向数组

场景:~/work/graph/isl.cpp 数岛屿,sample.txt 里明明是一个 U 形的岛,它却数出了 2 个。 任务:找出方向数组里写错的那一项并修好(上下左右四个方向)。make 编译后用 sample.txt 自测;che

开始练习 →

写数出有几个岛

场景:~/work/graph/count.cpp 要输出网格里岛的个数(上下左右相连算一个岛),count_islands 还没写。 任务:补全 count_islands。make 编译后用 sample.txt 自测;check 会用

开始练习 →

两种最短差在哪

无权图和带权图上说的「最短路」,区别是【0】。

开始练习 →

什么时候可以直接用 BFS

第 1 步:从 0 到 4 有两条路 第 2 步:两段那条:1 + 9 第 3 步:三段那条:2 + 3 + 1 第 4 步:段数多,反而更近 0 1 3 2 4 2 1 3 9 1 求最短路时能直接用 BFS 的条件是【0】。

开始练习 →

带权图上要换成什么

边的权重不一样时,求最短路要换成【0】。

开始练习 →

松弛一条边是什么意思

最短路算法里说的「松弛」是指【0】。

开始练习 →