/*
* 流水作业调度算法
* 参考算法设计与分析 (第二版)采用JAVA实现
*/
package com.book.java;
import java.util.Arrays;
public class Project30_FlowShop {
public static void main(String[]args)
{
int []a={30,120,50,20,90,110};//在第一台机器上需要的时间
int []b={80,100,90,60,30,10};//在第二台机器上需要的时间,其中数组a和b的
下标对应着相应的任务
int []c=new int[a.length];//用来存储最佳的顺序
flowShop(a,b,c);
System.out.println("完成任务的顺序为:");
for(int i=0;i<a.length;i++)
{
System.out.print((c[i]+1)+" ");
}
int price[][]=new int[2][a.length];
//用来存储最佳顺序中需要在第一台上的时间,以及在在第二台机器上时间
price[0][0]=a[c[0]];
price[1][0]=b[c[0]];
for(int i=1;i<a.length;i++)
{
price[0][i]=a[c[i]];
int temp=price[1][i-1]-a[c[i]];
if(temp<=0)
{
temp=0;
}
price[1][i]=temp+b[c[i]];
}
System.out.println(" ");
System.out.print("需要的时间为: ");
int sum=0;
for(int i=0;i<a.length;i++)
{
//System.out.println(price[0][i]+" , "+price[1][i]);
sum=sum+price[0][i];
}
sum=sum+price[1][a.length-1];
System.out.println(sum);
}
public static void flowShop(int[]a,int []b,int c[])
{
int len=a.length;
Element ele[]=new Element[a.length];
for(int i=0;i<len;i++)
{
int key=a[i]<=b[i] ?a[i]:b[i];
boolean temp=(a[i]<=b[i]);
评论1