📄 shengchanjihua.cpp
字号:
#include<iostream.h>
int n,maxl=50,maxp=50,d[20],f[20][50],x[20][50],
xstar[20],io=0;
int pc(int j)
{
if(j==0)
return 0;
else
return 20+5*j;
}
int eic(int j)
{
return j;
}
int sum(int i)
{
int sum=0;
for(int j=i;j<=n;j++)
sum+=d[j];
return sum;
}
void main()
{
int i,k,nei,nnei,z;
cout<<"输入周期数"<<endl;
cin>>n;
cout<<"输入各周期的需求量"<<endl;
for(i=1;i<=n;i++)
cin>>d[i];
for(k=0;k<=d[n];k++)
{
f[n][k]=pc(d[n]-k);
x[n][k]=d[n]-k;
}
for(i=n-1;i>=1;i--)
{
int in=d[i];
int min=(sum(i)<maxl)?sum(i):maxl;
for(k=0;k<=min;k++)
{
int left=(0>(in-k))?0:(in-k);
int temp=(maxp<(sum(i)-k))?maxp:(sum(i)-k);
int right=(temp<(in+maxl-k))?temp:(in+maxl-k);
f[i][k]=pc(left)+eic(k+left-in)+f[i+1][k+left-in];
int d=left;
for(z=left+1;z<=right;z++)
{
int na=pc(z)+eic(k+z-in)+f[i+1][k+z-in];
if(na<f[i][k])
{
f[i][k]=na;
d=z;
}
}
x[i][k]=d;
}
}
xstar[1]=x[1][io];
nei=io;
for(i=2;i<=n;i++)
{
nnei=xstar[i-1]-d[i-1]+nei;
xstar[i]=x[i][nnei];
nei=nnei;
}
cout<<"各阶段的生产量如下"<<endl;
for(i=1;i<=n;i++)
cout<<xstar[i]<<' ';
cout<<endl;
cout<<"最小费用为: "<<f[1][io]<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -