void printP(int len){
//打印调度方案。只是其中一种方案
for(int i=0;i<len;i++){
printf(“任务:%d”,kk[i][0]+1);
printf(“分配给:%d\n”,kk[i][1]+1);
}
printf(“最佳调度方案时间为:%d\n”,bestT);
}
void copy(int k[][3],int len){
for(int i=0;i<len;i++){
kk[i][0] = k[i][0];
kk[i][1] = k[i][1];
}
}
void search(int i,int* ti,int n,int k[][3],int kl){
if(i>=n){
//说明所有任务全部分配完毕
if(bestT==-1){
bestT = maxTime(k,n,kl);
copy(k,n);
}else if(bestT>maxTime(k,n,kl)){
bestT = maxTime(k,n,kl);
copy(k,n);
}
}
for(int j=0;j<kl;j++){
//需要进行减枝操作
if(bestT!=-1){
if(maxTime(k,i,kl)<bestT){
k[i][0] = i;//任务
k[i][1] = j;//分配给j
k[i][2] = ti[i];//时间
search(i+1,ti,n,k,kl);
}
}else{
k[i][0] = i;//任务
k[i][1] = j;//分配给j
k[i][2] = ti[i];//时间
search(i+1,ti,n,k,kl);
}
}
}
最佳调度回溯法。C语言实现
原文作者:回溯法
原文地址: https://blog.csdn.net/liuxiongfeng22/article/details/85160900
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/liuxiongfeng22/article/details/85160900
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。