解题思路:

如图所示,对于第一组样例输入,按照总工序提供的顺序,对于每个工件的工序从小到大,每次寻找有空闲机器的“空档”插入,就能让总加工时间最短。

注意事项:

按照约定,最短方案有且只有一种。

参考代码:#include

int w[21];                                    //当前安排的工件处于几号工序

int u[501];                                   //安排几号工件进入总工序

int lt[21];                                   //当前安排的工件几时结束

int t[21][21];                                //每个工件的每个工序的加工时间

int d[21][21];                                //每个工件的每个工序所使用的机器号

int c[21][501];                               //每个机器在工件完成后某时间段内是否被占用

int main(){

int max(int,int);

int i,j,k,m,n,ans=0,s=0;

scanf("%d%d",&m,&n);

for(i=1;i<=m*n;i++) scanf("%d",&u[i]);    //输入总工序

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

scanf("%d",&d[i][j]);             //输入第1个工件第j个工序所使用的机器号

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

scanf("%d",&t[i][j]);             //输入第i个工件第j个工序的加工时间

for(i=1;i<=n*m;i++){

w[u[i]]++;                            //总工序中第i个工件处于几号工序

for(j=lt[u[i]]+1;;j++){               //总工序中工件u[i]当前工序若能完成的时间段

if(c[d[u[i]][w[u[i]]]][j]==0) s++;//工件u[i]在当前工序所使用的机器未被占用时长

else s=0;

if(s==t[u[i]][w[u[i]]]){          //工件u[i]在当前工序的加工时间

for(k=j-s+1;k<=j;k++)         //在j之前的这段时间s

c[d[u[i]][w[u[i]]]][k]=1; //安排工件u[i]在当前工序占用相应的机器

lt[u[i]]=j;                   //工件u[i]的完成时间

s=0;

break;

}

}

}

for(i=1;i<=n;i++)

ans=max(ans,lt[i]);                   //工序中最后一个工件的完成时间

printf("%d",ans);

return 0;

}

int max(int a,int b){

return a>b?a:b;

}

作业调度C语言编写,【作业调度方案】 (C语言代码)相关推荐

  1. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码

    1.1 FPGA面试题-使用Verilog语言编写异步复位同步释放代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog语言编写异步复位 ...

  2. HTML语言编写的树形导航栏代码

    求HTML语言编写的树形导航栏代码 代码: <HTML> <HEAD> <TITLE>树形菜单</TITLE> <STYLE type=" ...

  3. 用C语言编写万年历6,C语言编写万年历

    <C语言编写万年历>由会员分享,可在线阅读,更多相关<C语言编写万年历(8页珍藏版)>请在人人文库网上搜索. 1.C语言编写万年历 [要求]:1 程序运行后,首先在屏幕上显示主 ...

  4. c语言编写系统服务程序,C语言Windows服务程序编写-ServiceMain

    C语言编写的Windows服务程序,可以类比Linux/Unix环境下的daemon进程. 一下是VS2010环境下的demo: // windows_service.cpp : 定义控制台应用程序的 ...

  5. c语言编写modbus程序,C语言编写modbus协议

    <C语言编写modbus协议>由会员分享,可在线阅读,更多相关<C语言编写modbus协议(23页珍藏版)>请在人人文库网上搜索. 1.include / 字地址 0 - 25 ...

  6. c语言编写计算机软件,基于C语言的计算机软件编程分析.doc

    基于C语言的计算机软件编程分析.doc 基于C语言的计算机软件编程分析 摘要:C语言是一种重要的编程语言,在当今IT业的运用十分广泛.使用C语言来编写的程序简单.直接.准确,极大地推动了计算机软件的更 ...

  7. 用c语言编写字母循环,C语言输入循环字母

    广告 提供50多种云计算产品,包括云服务器和云. 创建一站式云产品试用服务,以帮助开发人员和企业以零门槛进入云环境. 是否有一种简单的方法来调用c脚本,以查看用户是否输入了英文字母中的字母?我在想这样 ...

  8. c语言编写五子棋报告,c语言报告五子棋.pdf

    C 语言课程设计报告 c 题目: 简单的 五子棋 设计者: 方阳 专业班级: 软件工程1303班 学号: 311309060324 指导老师: 刘洁 所属系部: 计算机学院 2014年6月25 日 河 ...

  9. c语言编写音乐播放器完整代码(mciSendString函数的使用方法,第一次使用Visual Studio 2019的详细步骤)

    本文会尽量让和笔者一样只有一点点可怜的c语言基础的小白看懂,并写出自己的音乐播放器. 笔者使用的编译器是Visual Studio 2019,直接在官网下载就行了.下面是Visual Studio 2 ...

  10. 用c语言编写实心菱形,C语言编写内置菱形的程序

    C语言编写内置菱形的程序 最近迷上了用C语言编写图形的输出程序,有矩形的.三角形.等腰三角形,平行四边形.菱形.沙漏形.今天尝试着将菱形内置到矩形中,结果成功了,下面将快乐分享给大家,也希望广大C程序 ...

最新文章

  1. ROS上同时预览depth,IR,RGB 调试记录
  2. 走进科学-小菌株大作为—枯草芽孢杆菌替代畜牧业抗生素添加
  3. hive同时不包含一些字符串_Hive中常用的字符串操作
  4. 未来货运:无人驾驶技术和卡车司机如何配合?
  5. 十二 手游开发神器 cocos2d-x editor 之游戏暂停悬浮层
  6. excel换行按什么键_电脑结束任务按什么键
  7. B - Friends
  8. PAT 1082. 射击比赛 (20) - 乙级
  9. Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库
  10. MFC学习笔记(1)
  11. 能力的变迁:能力包括哪些方面
  12. SSM(Spring+SpringMVC+MyBatis):图书管理系统附有GIF动图,博主可免费答疑
  13. ansys选择一个面上所有节点_ansys中如何选择面及其上的节点
  14. matlab中的sprintf函数,Matlab中disp和sprintf函数使用方法和区别介绍
  15. 境外显示手机无服务器,手机卡在国外无服务怎么办
  16. 项目 cg day09
  17. 判断当前打开的是手机还是pc浏览器还是微信浏览器
  18. 使用VProtect给自己开发的软件加密
  19. 反脆弱性:为什么工作越稳定,人生越脆弱?
  20. Elasticsearch中object类型与nested类型之间的区别

热门文章

  1. 详解GPU技术关键参数和应用场景
  2. 面试鹅厂,我三面被虐的体无完肤……
  3. K8S精华问答 | 如何监控部署在Docker容器上的应用程序?
  4. 2017 JavaScript 调查报告概述
  5. rocketmq怎么保证数据不会重复_RocketMQ保证信息有序性和防止重复
  6. 使用dubbo后尽量不用要@Service可能引起冲突
  7. java生成html表格数据_使用Java将表格数据导出成Excel格式
  8. 乘法原理的例题和答案_吃透高考数学17个必考题型,基础再差也能考130!(内附解题技巧+例题解析)...
  9. 在vm中安装linux虚拟机,如何在vm虚拟机中安装linux
  10. linux 网络dma驱动,S3C2410的Linux下DMA驱动程序开发