解题思路:
如图所示,对于第一组样例输入,按照总工序提供的顺序,对于每个工件的工序从小到大,每次寻找有空闲机器的“空档”插入,就能让总加工时间最短。
注意事项:
按照约定,最短方案有且只有一种。
参考代码:
#include<stdio.h> 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; }
0.0分
2 人评分
题目不是要求这样的吗? 工序:1-1、1-2、2-1、3-1、3-2、2-2 时间: 3 2 2 5 2 4 机器号:1 2 1 2 2 1 工序3-2应该在机器2加工时间为2,图中却在机器1加工时间为4。
DGX 2019-03-21 10:59:57 |
sorry ,我理解错了。每一行代表一个工件两个不同工序。不是按照总工序一个一个对应。
明明有更短的方案:(前提:题目没有说明一个工件在不同机器上切换需要耗时) 2-1 1-1 3-2 machine1 | 2| 3 | 4| machine2 | 2| 5| 2| 时长=9 3-1 2-2 1-2
Ghost丶痴 2018-12-22 00:10:25 |
答案就是那个图,要按顺序,并且满足(1).(2)两个条件,你这个没满足顺序,最先的肯定是1-1
炒鸡大叔 2020-01-28 11:34:31 |
给定顺序已经明确地规定了每一步安排具体的工件对应的工序,安排具体工件的具体工序时须按照给定顺序,在具体的机器上进行插入。给定顺序已满足题设,但实际的流程图表尚未明晰,需读者自行完成。成图中耗时即为该给定顺序下的耗时。需注意,符合题设且在给定顺序下的时间已唯一确定。读者需按题意要求解题。困难的步骤在读者自行完成流程图表。理解题意后发现题目很简明:因为默认输入的给定顺序已合题设。说到底是道语文题。自己动手画画会对理解有帮助。
C语言考试练习题_排列 (C语言代码)浏览:1373 |
printf基础练习2 (C语言代码)浏览:605 |
数列排序 (C语言代码)浏览:858 |
九宫重排 (C++代码)浏览:1410 |
人见人爱A+B (C语言代码)浏览:663 |
简单的a+b (C语言代码)浏览:564 |
淘淘的名单 (C语言代码)浏览:1167 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:660 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:637 |
1011题解浏览:819 |
左嘉 2020-01-31 22:34:35 |
读题就用了半个多小时
左嘉 2020-01-31 22:34:49 |
读题就用了半个多小时
左嘉 2020-01-31 22:35:03 |
读题就用了半个多小时
左嘉 2020-01-31 22:35:57 |
读题就用了半个多小时
左嘉 2020-01-31 22:43:03 |
想了半天