我们面临的基本问题是“邮资为m时可否用少于等于k张邮票来组成”,这是一个yes or no的特殊化问题,它所对应的一般化问题为“组成邮资为m时至少需要多少张邮票”,如果解决了一般化问题则特殊化问题就容易知道了。(想问题时,如果遇到了一个特殊化问题就同时去想想对应的一般化问题,同样,如果遇到一般化问题也同时想想对应的特殊化问题。)

下面简单对“组成邮资为m时至少需要多少张邮票”这个问题给出动规方程。

用values[]表示每种邮票的面值,用needs[i]表示组成邮资 i 至少需要邮票的张数,则有:

needs[i] = min{needs[ i - values[j] ] + 1}, 其中 1 <= j <= n ,且 i - values[j] > 0。

Code
posted on 2009-01-17 15:17  刘永辉  阅读(359)  评论(0编辑  收藏  举报