没有环路的关卡可以看成一棵树。每一轮同时移除末端房间,会逐渐留下更靠近结构中心的部分。若一边删除一边立刻更新本轮名单,结果就不再表示同一层。
以下是一组输入完整的独立案例。先读清规则,再按时间或操作顺序记录中间状态;遇到与预期不同的结果时,检查首次出现差异的位置。案例使用明确限定的教学模型,不假定所有作品都采用相同的处理方式。
规则和原始数据
输入是无向连通树,每轮先按轮初快照选出度数不超过一的房间,再同时移除。单独剩下一个房间时它的度数为零,也在下一轮移除。不把本例直接用于含环地图。
共9个房间,编号从零开始 [[1, 0], [2, 1], [3, 0], [4, 2], [5, 2], [6, 4], [7, 2], [8, 4]]
逐步记录
房间0初始连接[1, 3],度数2。
房间1初始连接[0, 2],度数2。
房间2初始连接[1, 4, 5, 7],度数4。
房间3初始连接[0],度数1。
房间4初始连接[2, 6, 8],度数3。
房间5初始连接[2],度数1。
房间6初始连接[4],度数1。
房间7初始连接[2],度数1。
房间8初始连接[4],度数1。
第1轮依据轮初度数{0: 2, 1: 2, 2: 4, 3: 1, 4: 3, 5: 1, 6: 1, 7: 1, 8: 1},同时移除[3, 5, 6, 7, 8],剩余[0, 1, 2, 4];本轮新出现的末端留待下一轮。
第2轮依据轮初度数{0: 1, 1: 2, 2: 2, 4: 1},同时移除[0, 4],剩余[1, 2];本轮新出现的末端留待下一轮。
第3轮依据轮初度数{1: 1, 2: 1},同时移除[1, 2],剩余[];本轮新出现的末端留待下一轮。
共3轮清空,最后一层为[1, 2]。
交叉核对与应用
用每个剩余房间的邻接集合重新计算本轮度数,并确认所有被移除房间只出现一次。最后一层有一个或两个房间;这一性质依赖树的前提。
树形结构每两点之间只有一条简单路径;加入一条形成环的连接后,某些剩余房间可能永远没有度数不超过一的节点。届时应重新定义任务,不能继续宣称同样过程一定会清空。
建议保留原始输入、每一步状态和最终输出,再只改变一个条件做对照。重点检查空输入、相等边界、重复请求以及先后顺序;把规则约定、计算过程和显示表现分别核对,比只比较最后一个数字更容易找到原因。
