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