多机调度问题

#include
#include
#include
#define x 10 
#define y 10 
#define N 5
#define M 3
int d[x];
int c[x];
int S[x][y];
struct work{
 int hour;
 int number;
};
work t[x];
void bubble_sort(work a[], int n){//冒泡排序 
 int i, j;
 work temp;
 for (j=0; j   for (i=0;i   {
   if (a[i].hour    {
    temp=a[i];
    a[i]=a[i+1];
    a[i+1]=temp;//
   }
  }
 }
}
void MultiMachine(work t[], int n, int d[], int m);
int main(){
    int m=M,n=N,j;
    printf("请输入作业需要处理的时间:");
    srand((unsigned)time(NULL));
    work t[x];
    for(int i=0;i     {
        t[i].number=i+1;
        t[i].hour=rand()%50+1;
        printf("%d号作业需要%d分钟\n",t[i].number,t[i].hour);
    }
    bubble_sort(t, n);
    for(j=0;j     {
        d[j]=t[j].hour;
    }
    MultiMachine(t, n, d, m);
}
void MultiMachine(work t[], int n, int d[], int m){
    int rear[x];
    int i, j, k,max;
    for (i=0;i  {
    S[i][0]=t[i].number;
    rear[i]=0;
    d[i]=t[i].hour;
 }
    for (i=m;i  {
    for (j=0,k=1;k     if (d[k]    {
        j=k;
   }
  }
    rear[j]++;
    S[j][rear[j]]=t[i].number;
    d[j]+=t[i].hour;
 }
    for (i=0;i  {
  printf("机器%d处理:",i+1);
    for (j=0;S[i][j]>0;j++)
  {
    printf("作业%d\t",S[i][j]);
  }
    printf("处理时间:%d\n",d[i]);
    printf("\n");

 }
    for(i=0;i     printf("%d",d[i]);
    printf("\n");
    max=d[0];
    if(d[i]>max){
    max=d[i];
    }
 }
    printf("最短完工需要%d",max);
    
}
 

你可能感兴趣的:(算法)