解题思路
把台位看成无向图的顶点,栈道看成边。第 r 层第 c 个台位的编号是 2r(r−1)+c。对每个 r≥2 与 c<r,同层相邻两点与上一层对应点构成一个小三角形,三条边都要加入图中。
- 每个顶点的度数都是偶数(角上为 2,边界为 4,内部为 6),图连通,因此存在欧拉回路。
- 边数是 3h(h−1)/2,回路上的点列长度为 3h(h−1)/2+1,首尾都必须是出发台位 s。
- 从 s 出发,一直沿着尚未用过的边走;当前点没有剩余边时,把它弹入答案。得到的序列是回路的逆序,再反转即可。
- 无向边用边号标记删除,避免同一条栈道走两次。邻接表上用指针记下「下一条待看的边」,总复杂度与边数成正比。
- 任意一条欧拉回路都正确,不需要特定字典序。