← RoseCode

ROSECODE 184

试管 2

Tubes 2

gerrob · 编程 ·

参见思南的 p180。现在有10管,名称分别为A、B、C、D、E、F、G、H、I、J,容量分别为14,13,12,12,10,10,7,7,7,7。第一个状态是(A 到 J)10,9,11,10,9,8,5,5,4,2。目标状态是(A 到 J)13,12,11,11,4,6,6,0,6,4。将每个状态编码为十六进制数 JIHGFEDCBA,因此起始状态为 245589AB9A,结束状态为 460664BBCD。

我们需要以最低限度达到目标状态 步数。

设 A 为大小为 k 的最终数组,其中包含状态 (从第一个到最后一个)其中:
A=[245589AB9A,...,460664BBCD]
其中A[i]是第i阶段的状态,i=1,..,k

设 N 为连接得到的十六进制数 上述数组的十六进制数字:
N=245589AB9A...460664BBCD 或
N=A[1]*B^(k-1)+A[2]*B^(k-2)+...+A[k]*B^0 其中 B=16^10=2^40

找到最小的N。
(即找到字典顺序第一的最短路径。)

答案格式:N Mod 1000000007

我的计时:60 秒。 [[使用小于1GB的Ram]]