设f(i)为从城市1依次跳到城市i的距离之和,设g(i)为从城市i依次跳到城市n的距离之和,则问题的答案为min{f(i-1)+g(i+1)+dis【i-1,i+1】}。其中,dis【i-1,i+1】表示城市i到城市i+1的曼哈顿距离,f(i)和g(i)都可以用递推来预处理求出:f(i)=f(i-1)+dis【i-1,i】,g(i)=g(i+1)+dis【i,i+1】.
也可以设f(i)为从城市1依次跳到城市n,且跳过城市i的距离之和,sum表示从城市1跳到城市n的距离之和,则f(i)=min{sum-dis【i,i-1】-dis【i+1,i】+dis【i-1,i+1】}。