初始化:
d[1...n][10...m] 设d(i,x)为第i个位置,有x资金时,所带来最大的价值v;
v[1...n][1...p], 设v(i,j)为第i个位置,第j个候选项的价值;
f[1...n][1...p] 设v(i,j)为第i个位置,他的价格为f[i,j];
在最开始把d[0][10...x]置为0,最后输出为d[n][]
算法思路:
最外层循环为for i=1 to n 表示依次考虑每一个位置的人
其次为 for x=10 to M 表示依次有多少钱
d[i][x]=max{d[i-1][x],d[i-1][x-f[i][j]]+v[i,j](for all j can buy) }
时间复杂度O(n*p*x)
空间复杂度O(n*x),最少可优化为背包问题f2的复杂度O(x)。