装配线调度(代码)
#include<iostream>
using namespace std;
int main()
{
int n,result;
cout<<"请输入装配线环节数目:";
cin>>n;
int *a=new int[n];
int *b=new int[n];
int *at=new int[n+1];
int *bt=new int[n+1];
int *fa=new int[n];
int *fb=new int[n];
cout<<"请输入装配线a各环节时间:";
for(int i=0;i<n;i++)
cin>>a[i];
cout<<"请输入装配线b各环节时间:";
for(i=0;i<n;i++)
cin>>b[i];
cout<<"请输入装配线a到b传送时间:";
for(i=0;i<n+1;i++)
cin>>at[i];
cout<<"请输入装配线b到a传送时间:";
for(i=0;i<n+1;i++)
cin>>bt[i];
cout<<"最优调度顺序为:";
for(i=0;i<n;i++)
{
if(i==0)
{
fa[i]=bt[i]+a[i];
fb[i]=at[i]+b[i];
}
else
{
fa[i]=(fa[i-1]+a[i])<(fb[i-1]+bt[i]+a[i])?(fa[i-1]+a[i]):(fb[i-1]+bt[i]+a[i]);
fb[i]=(fb[i-1]+b[i])<(fa[i-1]+at[i]+b[i])?(fb[i-1]+b[i]):(fa[i-1]+at[i]+b[i]);
if(fb[i]<fa[i])
{
if((fb[i-1]+b[i])<(fa[i-1]+at[i]+b[i]))
cout<<"b"<<b[i-1]<<" ";
else
cout<<"a"<<a[i-1]<<" ";
}
else
if((fa[i-1]+a[i])<(fb[i-1]+bt[i]+a[i]))
cout<<"a"<<a[i-1]<<" ";
else
cout<<"b"<<b[i-1]<<" ";
}
}
result=(fa[n-1]+at[n])<(fb[n-1]+bt[n])?(fa[n-1]+at[n]):(fb[n-1]+bt[n]);
if((fa[n-1]+at[n])<(fb[n-1]+bt[n]))
cout<<"a"<<a[n-1]<<" ";
else
cout<<"b"<<b[n-1]<<" ";
cout<<"\n最短时间为:";
cout<<result<<endl;
return 0;
}