c++ 算法设计与分析(第四版) 流水作业调度
来源:互联网 发布:ubuntu的vim怎么装不了 编辑:程序博客网 时间:2024/06/05 06:22
//DP算法--流水作业调度#include <iostream>using namespace std;class Jobtype {public: int operator <= (Jobtype a) const { return (key <= a.key); } int key , index; bool job;};//冒泡排序void Sort(Jobtype *d , int n){ int i , j ,flag; Jobtype temp; for (i = 0 ; i < n ; i++){ flag = 0; for (j = n-1 ; j > i ; j--) { //如果前一个数大于后一个数,则交换 if (d[j] <= d[j-1]) { temp = d[j]; d[j] = d[j-1]; d[j-1] = temp; flag = 1; } } //如果本次排序没有进行一次交换(已排好序),则break,减少了执行时间。 if (flag == 0) { break; } }}//调用流水作业算法int FlowShop(int n , int a[] , int b[] , int c[]){ Jobtype* d = new Jobtype[n]; for (int i = 0 ; i<n ; i++) { d[i].key = a[i] > b[i] ? b[i] : a[i]; //按Johnson法则分别取第i个作业的a[i]或b[i]值作为关键值 d[i].job = a[i] <= b[i]; //给符合条件a[i]<b[i]的放入到N1子集标记为true d[i].index = i; } //排序 Sort(d,n); //按关键字排序 int j = 0 , k = n-1 ; for (i = 0 ; i < n ; i++) { if ( d[i].job) c[j++] = d[i].index; //将排过序的数组d,取其中作业序号属于N1的从前面进入 else c[k--] = d[i].index; //属于N2的从后面进入,从而实现N1的非减序排序,N2的非增序排序 } j = a[c[0]]; k = j + b[c[0]]; for (i = 1 ; i < n ; i++) { j += a[c[i]]; //M1在执行c[i]作业的同时,M2在执行c[i-1]号作业,最短执行时间 //取决于M1与M2谁后执行完 k = j < k ? k+b[c[i]] : j+b[c[i]]; //计算最优加工时间 } delete d; return k;}int main(){ int n; int *a , *b , *c; cout << "输入作业数: \n"; cin >> n; a = new int[n]; b = new int[n]; c = new int[n]; cout << "输入M1上加工时间a[]: \n"; for (int i = 0 ; i< n ; i++) { c[i] = 0; cin >> a[i] ; } cout << "输入M2上加工时间b[]: \n"; for (i = 0 ; i< n ; i++) { cin >> b[i]; } //调用流水作业调度算法 cout << "完成作业所需最短时间为: " << FlowShop(n , a , b , c) << endl; cout << "编号从0开始,作业调度的顺序为: \n"; for (i = 0 ; i < n ; i++) { cout << c[i] << " "; } cout << endl; return 0;}
0 0
- c++ 算法设计与分析(第四版) 流水作业调度
- 流水作业调度(动态规划)-算法设计与分析
- 算法设计与分析:第五章 回溯法 5.8流水作业车间调度
- 算法设计之流水作业调度问题Johnson算法结论
- 加工生产调度(Johnson算法 双机流水作业调度问题)
- 流水作业调度(dp)
- 流水作业调度的Johnson 算法
- 流水作业调度问题 Johnson 算法
- 流水作业调度(动态规划)
- 算法设计——流水作业
- 流水作业调度
- 流水作业调度
- 双机流水作业调度问题的Johnson算法
- 算法_动态规划_流水作业调度
- 0018算法笔记——【动态规划】流水作业调度问题与Johnson法则
- 0018算法笔记——【动态规划】流水作业调度问题与Johnson法则
- 0018算法笔记——【动态规划】流水作业调度问题与Johnson法则
- 0018算法笔记——【动态规划】流水作业调度问题与Johnson法则
- 数组指针和指针数组
- 运行错误:error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or
- 关于git无法提交到远程库的问题
- 求出1--100之间的素数
- mysql5.7新特性
- c++ 算法设计与分析(第四版) 流水作业调度
- Linux进程管理
- 用栈来实现括号匹配问题
- Xcode 增强开发效率的插件
- mysql5.7新特性
- 与地图相关的代码段
- 解决Hessian调用重载方法报错问题
- maven
- 字符串替换的一个工作实例