自己的动归很弱,就找了个分类来做。这道题是上边列的第一道背包问题,可我看了半天也没想法,状态定义不出来,后边的就更不要想了……后来看了别人的思路,动归做的太少了……
定义状态:f[i][j]表示前i个砝码,平衡度为j的挂法的数量,状态转移方程为:f[i][j]=∑(f[i-1][j - pos[k] * weight[i]), k=1~C, j=0~7500, i=1~20。初始状态 f[0][3750]=1 表示不用物体时,平衡度为0有一种挂法。为什么是3750呢?因为最极端的情况,平衡度为15 * 25 * 10 = 3750,为了避免负数,我们加一个偏移量3750,这样f[0][0]变成f[0][3750]了。
程序代码: