聊城定制化网站建设,正规的培训行业网站制作,成考做那个网站的题比较好,湖南长沙旅游攻略解题思路:如图所示#xff0c;对于第一组样例输入#xff0c;按照总工序提供的顺序#xff0c;对于每个工件的工序从小到大#xff0c;每次寻找有空闲机器的“空档”插入#xff0c;就能让总加工时间最短。注意事项:按照约定#xff0c;最短方案有且只有一种。参考代码:#…解题思路:如图所示对于第一组样例输入按照总工序提供的顺序对于每个工件的工序从小到大每次寻找有空闲机器的“空档”插入就能让总加工时间最短。注意事项:按照约定最短方案有且只有一种。参考代码:#includeint 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,ans0,s0;scanf(%d%d,m,n);for(i1;im*n;i) scanf(%d,u[i]); //输入总工序for(i1;in;i)for(j1;jm;j)scanf(%d,d[i][j]); //输入第1个工件第j个工序所使用的机器号for(i1;in;i)for(j1;jm;j)scanf(%d,t[i][j]); //输入第i个工件第j个工序的加工时间for(i1;in*m;i){w[u[i]]; //总工序中第i个工件处于几号工序for(jlt[u[i]]1;;j){ //总工序中工件u[i]当前工序若能完成的时间段if(c[d[u[i]][w[u[i]]]][j]0) s;//工件u[i]在当前工序所使用的机器未被占用时长else s0;if(st[u[i]][w[u[i]]]){ //工件u[i]在当前工序的加工时间for(kj-s1;kj;k) //在j之前的这段时间sc[d[u[i]][w[u[i]]]][k]1; //安排工件u[i]在当前工序占用相应的机器lt[u[i]]j; //工件u[i]的完成时间s0;break;}}}for(i1;in;i)ansmax(ans,lt[i]); //工序中最后一个工件的完成时间printf(%d,ans);return 0;}int max(int a,int b){return ab?a:b;}