这个手机号码是11位的,搜索空间很小,用普通的搜索就行了:(pos1, pos2, index) = Min(dis(pos1,
telnum[index]) + (telnum[index], pos2, index+1)
/*第一个机械臂从pos1移动到telnum[index]*/,dis(pos2, telnum[index]) +
(pos1, telnum[index], index+1))
/*或者第二个机械臂从pos2移动到telnum[index]*/
;
(pos1, pos2, 11) = 0。
(其中dis函数是两个按键的移动消耗,O(1)的复杂度),然后可能会出现重复计算,那么就加个记忆set保存计算过的结果,还有(pos1,
pos2, index) == (pos2, pos1, index)。