题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1717
题意简述:如图,给定n块骨牌,上下两端有点数,点数大小[0,6],求翻转m次后使得骨牌上下总差值的绝对值最小,在此基础上求得最小的m值。
解题思路:背包思想,设dp[i]表示总差值到达i时的翻转的最小次数,每张牌每次翻转都会使差值变化原来差值的两倍,所以我们可以这样设计转移方程:dp[i]=min(dp[i],dp[i-value[j]]);注意在实现过程中注意dp的代换,和保证数组下标>=0。
以下就是我的代码: