装配线调度(代码)

#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;
}

 

 

 

 


 

posted @ 2013-08-20 00:29  Xbingbing  阅读(135)  评论(0编辑  收藏  举报