题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=4433
题目大意
有一把六位数字的密码锁,一次可以移动1/2/3位,向上移动一位或向下移动一位。给定现在的状态和密码的状态,问最少操作多少。
思想
这是一个动归,但是状态比较难描述。
我们记录dp[i][j][k]为前i位已经OK,第i+1位增加了j,第i+2位增加了k时,已经走了dp[i][j][k]步。
目前我们假设前i位已经OK,第i+1位增加了j,那么现在的i+1位变成正确的移动的步数为s2[i]-s1[i]-j。应该考虑up和down两个操作。
应该注意的是,第i位的操作数>=第i+1位的操作数>=第i+2位的操作数
代码
1 |
|
后记
很多DP都是看了能看懂但自己想不到。继续练习把 。