我有一个行对象,每个行对象都有一个与之关联的任务数组。每个任务都有一个开始时间和一个结束时间。每个任务还有一个任务列表,它是它的前辈。
因此,如果所有任务都是独立的(没有前任),我只计算每行的最后一个任务的结束时间,这将是该行的结束时间。生产所花费的时间将是所有行的结束时间的最大值。
问题是任务可能依赖于任务(可能在相同或不同的行上)。因此,如果任务的前任位于不同的行并且其开始时间大于此任务的开始时间,则应相应地更新此任务的开始时间。
如何根据这些先前任务在不同的行上计算正确的生产时间?
修改 这就是我到目前为止所提出的。
Cluster {
func* func[n]
};
func {
int executiontime;
int starttime;
int endtime;
func* pred[k]
};
int main {
/Cluster objects were initialized up somewhere.
Cluster cl[4];//An array of four clusters
for(int i=0;i<4;i++) {
cl[i].func[0].starttime = 0;
cl[i].func[0].endtime = cl[i].func[0].starttime + cl[i].func[0].executiontime;
for(int j=1;j<n;j++) {
cl[i].func[j].starttime = cl[i].func[j-1].endtime;
cl[i].func[j].endtime = cl[i].func[j].starttime + cl[i].func[j].executiontime;
}
}
int productiontime=Max(cl[0].func[n].endtime,cl[1].func[n].endtime,cl[2].func[n].endtime,cl[3].func[n].endtime);
return productiontime;
}
这是我到目前为止所做的。我坚持如何修改代码来解释任务前辈。
编辑:在上面的循环之后,我会更新其前任任务在另一行上的每个任务的开始和结束时间。如果前任任务的开始时间大于此任务的开始时间那么这个任务的开始和结束时间都会更新。当问题是前任任务的开始时间可能还需要根据其自己的前任任务进行更新时,我该怎么做呢。