流水作业调度问题
来源:互联网 发布:数据分析工程师笔试题 编辑:程序博客网 时间:2024/06/01 10:29
流水作业调度问题
n个作业{0,1,2,…,n}在2台机器上M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,后在M2上加工。在两台机器上加工的时间分别为ai和bi。
解:
流水作业调度:
根据Johnson法则
使用结构体数组f1[j] 存放a[i]<b[i]的作业
使用结构体数组f2[k] 存放a[i]>=b[i]的作业
对f1[j]根据a[j]进行升序排列
对f2[k]根据b[k]进行降序排列。
遍历两个结构体数组,依次求时间
取两个机器运行时间的较大值作为作业用时。
#include <stdio.h>#include <algorithm>using namespace std;struct node{int a,b;};bool cmp1(node p,node q){return p.a<q.a;}bool cmp2(node p,node q){return p.b>q.b;}int main(){int a[100],b[100];int n; node f1[100];node f2[100];scanf("%d",&n);int i,j,k; for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){scanf("%d",&b[i]);}for(i=0,j=0,k=0;i<n;i++){if(a[i]<b[i]){//a[i]<b[i]放到f1[j]中f1[j].a=a[i];f1[j].b=b[i];j++;}else{//a[i]>=b[i]放到f2[k]中 f2[k].a=a[i];f2[k].b=b[i];k++;}}sort(f1,f1+j,cmp1);//升序 sort(f2,f2+k,cmp2);//降序 int first=0;//机器a作业 int secend=0;//机器b作业 for(i=0;i<j;i++){first+=f1[i].a;secend=(first>secend?first:secend)+f1[i].b;//两个机器作业取大值 }for(i=0;i<k;i++){first+=f2[i].a;secend=(first>secend?first:secend)+f2[i].b;}printf("%d\n",secend);}
0 0
- 流水作业调度问题(转)
- 流水作业调度问题
- 流水作业调度问题
- 流水作业调度问题
- 流水作业调度问题
- 流水作业调度问题
- dp:流水作业调度问题
- Java实现流水作业调度问题
- 流水作业调度问题 Johnson 算法
- 流水作业调度
- 流水作业调度
- 双机流水作业调度问题的Johnson算法
- 加工生产调度(Johnson算法 双机流水作业调度问题)
- 算法java实现--动态规划--流水作业调度问题
- 算法设计之流水作业调度问题Johnson算法结论
- 最优流水作业调度
- 最优流水作业调度
- 流水作业调度-动态规划
- 387. First Unique Character in a String#2(Done)
- hadoop框架下各类软件介绍
- RecyclerView详解
- 为caffe添加新的层
- 浓浓一笔,圈住2016
- 流水作业调度问题
- 人脸识别(Face Recognition)相关
- getBoundingClientRect的用法
- CSS学习Day05
- Mapreduce基本介绍(一)
- 对称加密与公钥加密(下)
- Unity Shader 小结
- Java学习笔记之JSP动作元素
- 生命倒计时-倒数9118日