80求助
查看原帖
80求助
515516
RaspStudio楼主2021/8/20 21:58
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <limits.h>
#define MAXTIME 900000
#define MAXDESK 30
typedef struct
{
    int id[MAXDESK];
    int time[MAXDESK];
    int toDo;
    int End;
}ItemInfo;


int desk[MAXDESK][MAXTIME];
int findTime(int deskID, int timeWidth,int start)
{
    for (int i = start; i+timeWidth < MAXTIME; i++)
    {
        if(desk[deskID][i]==0){
            int flag=1;
            for (int j = i; j < i+timeWidth; j++)
            {
                if(desk[deskID][j]!=0){
                    i+=timeWidth;flag=0;break;
                }
            }
            if(flag){
                return i;
            }
        }
    }
    return -1;
}
int main ()
{
    int m;//机器数量
    int n;//工件数量
    scanf("%d%d",&m,&n);

    int flow[400]={0};//顺序流水线
    for (int i = 0; i < m*n; i++)
        scanf("%d",&flow[i]);
    
    ItemInfo list[MAXDESK]={{0}};
    for (int i = 1; i <= n; i++)
    for (int j = 0; j < m; j++)
        scanf("%d",&list[i].id[j]);

    for (int i = 1; i <= n; i++)
    for (int j = 0; j < m; j++)
        scanf("%d",&list[i].time[j]);
    //输入完成

    for (int i = 0; flow[i] != 0; i++)//流水线顺序进行
    {
        int ID=flow[i];
        int Step=list[ID].toDo++;
        int NeedMachine=list[ID].id[Step];
        int NeedTime=list[ID].time[Step];
        int Last=list[ID].End;
        int start=findTime(NeedMachine,NeedTime,Last);
        for (int i = 0; i < NeedTime; i++)
        {
            desk[NeedMachine][start+i]=ID;
        }
        list[ID].End=start+NeedTime;
    }
    
    for (int i = 0; i < MAXTIME; i++)
    {
        int empty=1;
        for (int j = 1; j <= m; j++)
        {
            if(desk[j][i]!=0){
                empty=0;break;
            }
        }
        if(empty){
            printf("%d",i);break;
        }
    }
    



    return 0;
}

#7 #9 WA

2021/8/20 21:58
加载中...