另外,再提醒你两个后续也会出问题的点,虽然它们不是这次输出变成 1..8 的主因:
- 你的
set<L_R_A_B_C> memo判重会用到operator<,但你把step也放进比较里了。
1 | bool operator<(const L_R_A_B_C &o) const { |
这会导致“同一个局面但 step 不同”被当成两个不同状态,不是你真正想要的“局面判重”。
- 你的边权其实是
0/1的:- 栈
>手,代价是1 - 手
>栈,代价是0
这种情况最好用0-1 BFS,或者至少用dist做最短路,不能简单地“第一次入队就判重”。
- 栈
如果你愿意,我下一条可以直接按你这份代码的风格,给你整理一个最适合这题打表的状态设计 + 0-1 BFS 写法。