#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#define N 5
#define C 10
#define M 2
int D[N+1]={0,3,5,2,1,6};//每个月的需求量
int H[19]={0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22};//根据数量变化的库存量
int cost(int h,int c)
{
return H[h]+c*C;
}
void dp(int**DP,int**store,int**Trace)
{
for(int i=1;i<N+1;i++)
{
for(int j=1;j<=17;j++)
{
if(i==1)
{
int extraC=j-M;
extraC=extraC>=0?extraC:0;
int st=j-D[i];
if(st<0)
{
DP[i][j]=999;
continue;
}
DP[i][j]=cost(st,extraC);
store[i][j]=st;
}
else
{
int mincost=INT_MAX;
for(int k=1;k<=17;k++)
{
int extraC=j-M;
extraC=extraC>=0?extraC:0;
int st=j-D[i]+store[i-1][k];
if(st<0)//未完成需求,代价设为最大
{
DP[i][j]=999;
continue;
}
i
算法导论 思考题 15-11(库存规划)
最新推荐文章于 2021-10-14 08:30:00 发布
该博客通过C语言实现了一个库存规划问题的动态规划解决方案。代码中定义了需求量、库存变化量和成本函数,并使用二维数组记录代价、库存状态和最优解选择。动态规划函数`dp`进行计算,并通过`printIt`展示结果。
摘要由CSDN通过智能技术生成