生产与存贮问题

在百度知道上回答的一个有意思小算法题。

题目:

今已知半年内,各月份的需求量及生产该部件每单位数所需工时数如下表所示: 月份 k 1 2 3 4 5 6 月需求量bk 8 5 3 2 7 4 单位工时ak 11 18 13 17 20 10 设库存容量H = 9,开始时库存量为2,期终库存量为0。要求制定一个半年逐月生产计划,使得既满足需求和库存容量的限制,又使得总耗费工时数最少。

我的解答,在vs2008下编译通过:

#include "stdafx.h"
#include<iostream>
using namespace std;
int main() 
{
const int 库容=9;
int 库存量 = 2;
int 月需[7]={0,8,5,3,2,7,4};
int 月工时[7]={0,11,18,13,17,20,10};
int 总工时=0;
int 月生产[7]={0};
for (int i=1;i<=6; i++)
{
int 本月必生产 = 月需[i]-库存量;

if (本月必生产 > 0)
{
库存量 = 0;
总工时 += 本月必生产*月工时[i];
月生产[i] += 本月必生产;
}
else
{
库存量 = 本月必生产*(-1);
}

//额外生产
int 虚拟库存 = 库存量;
for (int j=i+1;j<=6; j++)
{
if (月工时[i] < 月工时[j])
{
if (虚拟库存 >= 月需[j])
{
虚拟库存 -= 月需[j];
continue;
}
虚拟库存 = 0;
int 库空余 = 9-库存量;
if (库空余 > 0)
{
if(库空余>=月需[j])
{
总工时 += 月需[j]*月工时[i];
库存量 += 月需[j];
月生产[i] += 月需[j];
}
else
{
总工时 += 库空余*月工时[i];
库存量 = 9;
月生产[i] += 库空余;
break;
}
}
else
{
break;
}
}
else
{
break;
}
}
}
cout << "月生产: ";
for (int i = 1; i<=6; i++)
{
cout << "[" << 月生产[i] << "]";
}
cout << endl;
cout << "总工时: " << 总工时 << endl;
return 0;
}


结果输出:

月生产: [15][0][8][0][0][4]

总工时: 309

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值