2020-08-29

作业分配问题

#include "stdio.h"
#include "stdlib.h"
#define M 3   //机器数
int s[M] = {0,0,0};  //每台机器当前已分配的作业总耗时

int max(int s[],int num)  //求最长处理时间
{   
    int max = s[0];    
    int i;    
    for(i=1;i<num;i++)    
    {        
       if(max < s[i])        
          max = s[i];         
    }       
    return max; 
} 
int min(int m)    //求出目前处理作业的时间和最小的机器号
{   int min = 0;    
    int i;    
    for(i=1;i<m;i++)    
    {  if(s[min] > s[i])        
        min = i;           
    }    
    return min;    
}
int job1(int t[],int n)  //机器数大于待分配作业数
{
  int i,X;
  for(i=0;i<n;i++)
  {
     s[i] = t[i];
  }
  int ma = max(s,X);
  return ma;
} 
int job2(int t[],int n)   //机器数小于待分配作业数 
{   int i;    
    int mi = 0;    
    for(i=0;i<n;i++)    
    {   
        mi = min(M);      
        printf("第%d号作业,时间和最小的机器编号为%d.时间和为%d:\n",i,mi,s[mi]);      
        s[mi] = s[mi]+t[i];       
    }    
    int ma = max(s,M);    
    return ma;
}
int main(void) 
{   
    int k,N;
    int i,j,temp;
    printf("请输入作业个数:\n");
    scanf("%d",&N);
    int time[50];
    printf("请输入每个作业所需的时间:\n");
    for(k=0;k<N;k++)
        scanf("%d",&time[k]);
    for(i=0; i<N-1; i++)  //排序
    {   
        for(j=0; j<N-1-i; j++)
        {            
            if(time[j] < time[j+1])
            {                
                temp = time[j];               
                time[j] = time[j+1];                
                time[j+1] = temp;
            }
        }
    }
    printf("按降序排序后:\n");
    for(i=0;i<N;i++)
        printf("%d ",time[i]);
    printf("\n");
    int maxtime = 0;    
    if(M >= N)       
        maxtime = job1(time,N);     
    else    
        maxtime = job2(time,N);            
    printf("最多耗费时间%d\n",maxtime);    
    system("PAUSE");
}

你可能感兴趣的:(2020-08-29)