您的位置:首页 > 其它

装配线调度(算法导论)

2011-10-24 22:19 246 查看
题目如算法导论第十五章动态规划所述
#include <iostream>
using namespace std;
double f1[6];
double f2[6];
int l1[5];
int l2[5];
void fastest_way(double e1,double a1[],double t1[],double x1,
double e2,double a2[],double t2[],double x2,
int num,double &minTime,int & l)
{
f1[0]=e1+a1[0];
f2[0]=e2+a2[0];
for (int j=1;j<num;j++)
{
if (f1[j-1]+a1[j]<=f2[j-1]+t2[j-1]+a1[j])
{
f1[j]=f1[j-1]+a1[j];
l1[j-1]=1;
}
else
{
f1[j]=f2[j-1]+t2[j-1]+a1[j];
l1[j-1]=2;
}
if (f2[j-1]+a2[j]<=f1[j-1]+t1[j-1]+a2[j])
{
f2[j]=f2[j-1]+a2[j];
l2[j-1]=2;
}
else
{
f2[j]=f1[j-1]+t1[j-1]+a2[j];
l2[j-1]=1;
}
}
if (f1[num-1]+x1<=f2[num-1]+x2)
{
minTime=f1[num-1]+x1;
l=1;
}
else
{
minTime=f2[num-1]+x2;
l=2;
}

}
void print_station(int &l ,int num)
{
int i=l;
cout<<"line"<<i<<",station"<<num<<endl;
for(int j=num-1;j>0;j--)
{
if (i==1)
{
i=l1[j-1];
cout<<"line"<<i<<",station"<<j<<endl;

}
else
{
i=l2[j-1];
cout<<"line"<<i<<",station"<<j<<endl;

}
}
}
int main()
{
double e1=2;
double e2=4;
double x1=3;
double x2=2;
int num=6;
double a1[6]={7,9,3,4,8,4};
double a2[6]={8,5,6,4,5,7};
double t1[5]={2,3,1,3,4};
double t2[5]={2,1,2,2,1};
double minTime=0;
int l=0;
fastest_way(e1,a1,t1,x1,e2,a2,t2,x2,6,minTime,l);
print_station(l,6);

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法