算法导论15.1 装配线调度问题
2013-09-03 10:02
260 查看
//15.1装配线调度问题 #include <iostream> using namespace std; #define I 2 #define J 6 int a[I+1][J+1],e[I+1],x[I+1],t[I+1][J+1],n=J; int f[I+1][J+1],l[I+1][J+1],rf,rl; void Input()//输入 { int i,j; for(i=1;i<=I;++i) { for(j=1;j<=J;++j) { cout<<"Please input a["<<i<<"]"<<"["<<j<<"]"; cin>>a[i][j]; cout<<endl; } } for(i=1;i<=I;++i) { cout<<"Please input e["<<i<<"]"; cin>>e[i]; cout<<endl; } for(i=1;i<=I;++i) { cout<<"Please input x["<<i<<"]"; cin>>x[i]; cout<<endl; } for(i=1;i<=I;++i) { for(j=1;j<J;++j) { cout<<"Please input t["<<i<<"]"<<"["<<j<<"]"; cin>>t[i][j]; cout<<endl; } } } void fastest_way()//求装配线的最快路径 { int j; f[1][1]=e[1]+a[1][1]; f[2][1]=e[2]+a[2][1]; for(j=2;j<=n;++j) { //求到达f[1][j]的最快路线 if(f[1][j-1]+a[1][j]<=f[2][j-1]+t[2][j-1]+a[1][j]) { f[1][j]=f[1][j-1]+a[1][j]; l[1][j]=1; } else { f[1][j]=f[2][j-1]+t[2][j-1]+a[1][j]; l[1][j]=2; } //求到达f[1][j]的最快路线 if(f[2][j-1]+a[2][j]<=f[1][j-1]+t[1][j-1]+a[2][j]) { f[2][j]=f[2][j-1]+a[2][j]; l[2][j]=2; } else { f[2][j]=f[1][j-1]+t[1][j-1]+a[2][j]; l[2][j]=1; } } //最终的最快路线的结果 if(f[1] +x[1]<=f[2] +x[2]) { rf=f[1] +x[1]; rl=1; } else { rf=f[2] +x[2]; rl=2; } } void Print_Stations() { cout<<"输出装配路线"<<endl; int i=rl,j;//i表示最后是从哪条装配路线到达出口的 //倒序输出 cout<<"line "<<i<<" station "<<n<<endl; for(j=n;j>1;j--) { i=l[i][j]; cout<<"line "<<i<<" station "<<j-1<<endl; } } void Print_Stations2(int i, int j) { if(j != n) i = l[i][j+1]; //先输出前面的 if(j > 1) Print_Stations2(i, j-1); //再输出当前的 cout<<"line "<<i<<" station "<<j<<endl; } void Output() { int i, j; cout<<"输出f[i][j]"<<endl; //f[i][j]表示一个底盘从起点开始到装配站s[i][j]的最快可能时间 for(i = 1; i <= I; i++) { for(j = 1; j <= J; j++) cout<<f[i][j]<<' '; cout<<endl; } cout<<"输出l[i][j]"<<endl; //l[i][j]表示使得f[i][j]最小时在哪个装配线上装配j-1 for(i = 2; i <= I; i++) { for(j = 1; j <= J; j++) cout<<l[i][j]<<' '; cout<<endl; } } int main() { Input(); fastest_way(); Output(); Print_Stations(); cout<<"顺序输出装配路线"<<endl; Print_Stations2(rl, J); return 0; }
相关文章推荐
- 【算法导论】动态规划--装配线调度问题
- 装配线调度问题 算法导论动态规划P194
- 动态规划: 装配线调度问题 (算法导…
- 流水线调度问题实现(动态规划基础---------问题取自算法导论)
- 算法导论 用拟阵求解任务调度问题
- 【算法导论】装备线调度问题
- 算法导论-任务调度问题
- 动态规划解决——装配线调度(算法导论第15章)
- 算法导论-第15章-动态规划-15.1 钢条切割问题
- 一个任务调度问题-----算法导论
- 【算法导论】动态规划算法之装配线调度
- 【算法导论】动态规划算法之装配线调度
- 装配线调度(算法导论)
- 装配线调度问题的算法解析和验证
- 装配线调度问题(算法导论+动态规划)
- 算法导论16.2-2--动态规划(0-1背包问题)
- 七大排序问题之快速排序(参考算法导论PHP版)
- 动态规划--装配线调度问题
- 【算法】【动态规划】装配线调度
- 算法导论最后一章《近似算法》习题“装箱”问题求解