ACM UVa 116 - Undirectional TSP的解法

ACM UVa 116 - Undirection TSP

这一道题解决关键在两处:

1. 得到最小路径

定义每一个位置(x,y)的最小路径权值为p(x,y),于是有

p(x,y) = min { p(x-1, y) + p(x, (y + t + n) % n) | t = -1, 0, 1 }

按照动态规划的方法,从左往右或者从右往左以列为单位开始算即可。从左往右的话,最后一列的最小的p(x,y)就是结果。从右往左,那么第一列的最小的p(x,y)即为所求。

2. 得到最小路径并且每一步经过的行号按照字典顺序最小(lexicographically smallest)

要求是每一步经过的行号最小,并且从左到右的行号按照字典顺序是最小的。如果左往右计算的话,最后求得的不是字典顺序,虽然每一步都是行号最小的,但是大小顺序是从右往左,而不是从左往右,不符合字典顺序的要求。因此,必须是从右往左计算,第一列中最小的p(x,y)(相同的话那么行号必须是最小的)才是要求的答案。 

 

作者 :      ATField
E-Mail:   [email protected]
Blog:     
http://blog.csdn.net/atfield

你可能感兴趣的:(Blog)