首先做一个转化,这种转化很常见. 题目里面讲要来回走一遍,所以就转化成两个从起点到终点,路径不重合 那么很容易想到用f[i][j]表示第一个走到i,第二个人走到j还需要走的距离 但是这里无法保证路径不重合,所以这里怎么设计状态很关键. 我们设f[i][j]是1到max(i, j)全部走过,同时第一个在i,第二人在j, 还需要走的距离,可以看出f[i][j] = f[j][i],所以我们可以规定i > j 那么这么规定有什么好处呢?我们可以让两个人走的路径是1, 2, 3, 4-- 换句话说,当前…