这一道题解决关键在两处:
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)(相同的话那么行号必须是最小的)才是要求的答案。
E-Mail: atfield_zhang@hotmail.com
Blog: http://blog.csdn.net/atfield