你会得到一个包含骑士,车和女王的国际象棋棋盘。你应该确定骑士需要捕捉车和女王的最小移动次数,假设它们都没有移动。您可以按任意顺序捕获它们 - 先行先行或先行先行。
在这个任务中,可以证明从骑士到车的路径加上从车到女王的路径等于/小于/大于从骑士到女王的路径加上从女王到路径的路径车吗?或者我必须计算它们并采取最小值?
答案 0 :(得分:3)
你必须计算骑士和骑士女王的最低骑士。
从女王到白车的路径等于从车到女王的路径,所以你只需要计算一个方向。
答案 1 :(得分:0)
由于起始位置都是任意的,因此理论上可以交换Queen和Rook来生成相同问题的替代版本。因此,默认情况下,您不能假设一种方法比另一种方式短,您必须同时计算它们。无论哪个是哪个,但所有3个距离都是相关的。
以下内容仅在您希望实施智能算法而非广度搜索时才有意义。
请注意,总共有4条可能的路径(K是Knight,R是Rook,Q是女王):
1. K -> R -> Q
2. K -> Q -> R
3. K -> R -> K -> Q
4. K -> Q -> K -> R
你需要这些之间的最小值4.所以如果你计算了距离
a = K -> Q
b = K -> R
c = R -> Q
然后您要查找a+c
,b+c
,2*a+b
和2*b+a
之间的最小值。
如果以足够稳健的方式计算距离,则路径3和4将变得过时,因为它们的长度分别大于或等于1和2。但是,如果您不确定,可以使用它们来确认结果。如果3或4是最短路径,如果算法正常工作,它必须与1或2完全一样长。