典型的动态规划问题:
初始化一个数组用来记录所买书类的策略,0-5时初始化为已知条件所给,再来利用备忘录的方式来求解的策略。
代码如下:
#include <iostream>
using namespace std;
const int MaxSize=1000;
int main(){
double aValue[MaxSize]={0,0,0.1,0.3,0.8,1.25};
for(int i = 6; i < MaxSize; i ++)
{ double max=0;
for(int j = 1; j <= i/2; j++)
{
if(max < aValue[j] + aValue[i-j])
{
aValue[i] = aValue[j] + aValue[i-j];
max = aValue[i];
}
}
}
}
此策略只是计算买n本书时可以最多优惠多少,暂时未记录如何拆分此策略。