博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流水作业调度
阅读量:7073 次
发布时间:2019-06-28

本文共 918 字,大约阅读时间需要 3 分钟。

流水作业调度问题

描述:
N个作业{1,2,………,n}要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。
M1和M2加工作业i所需的时间分别为ai和bi,1≤i≤n。流水作业高度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在
机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。
可以假定任何任务一旦开始加工,就不允许被中断,直到该任务被完成,即非优先调度。
输入:
输入包含若干个用例,第一行为一个正整数K(1<=K<=1000),表示用例个数,接下来K个用例,每个用例第一个为作业数N(1<=N<=1000),
接下来N行,每行两个非负整数,分别表示在第一台机器和第二台机器上加工时间。
输出:
每个用例用一行输出采用最优调度所用的总时间,即从第一台机器开始到第二台机器结束的时间。
样例输入:
1
4
5 6
12 2
4 14
8 7
样例输出:
33


算法描述:

1 令N1={i | ai < bi},N2={i | ai>=bi}

2 将n1中作业按ai的非减排序,n2 作业按bi非增排序

3 构成满足Johnson法则的最优调度

#include 
#include
using namespace std;class JOB{public: int key,index; bool job;};bool cmp(JOB a,JOB b){ return a.key
>n; while(n--) { cin>>m; for(i=0;i
>a[i]; cin>>b[i]; } cout<
<

运行结果:

本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
向亲戚朋友解释系列之什么是IP,端口和域名
查看>>
高危预警!移动设备安全面临的5大新型威胁
查看>>
Linux中如何查看显卡硬件信息
查看>>
如何在Linux上检测硬盘上的坏道和坏块
查看>>
网络架构之路(一):目标
查看>>
低功耗M2M市场广阔 芯片设计如何降耗
查看>>
软件定义技术存在哪些限制?
查看>>
拨开数据迷雾:如何理清大数据脉络?
查看>>
Java动态绑定机制的内幕
查看>>
Linux下NMAP常用扫描简介(一)
查看>>
云计算正在改变整个ICT世界
查看>>
seo优化中不容忽视的页面优化
查看>>
DPDK成Linux基金会下开源项目
查看>>
《Oracle高性能自动化运维》一一第2章 Oracle内存体系结构 2.0
查看>>
维基解密曝光CIA新路由器网络攻击方式
查看>>
2016年8月印度电信市场表现
查看>>
股东质疑Alphabet管理 皮查伊2亿美元薪酬惹争议
查看>>
法国轻奢手机品牌HANMAC 解决手机行业创新瓶颈
查看>>
用户数据是关键 欧盟或调查微软收购领英交易
查看>>
制定网络安全计划目标,比方说先……
查看>>