问题:

代码实现:
#include<stdio.h>
int t[10][3];//2台机器上不同作业所花的时间
int n;//几个作业
int c=0;//机器2上所花的总共的时间
int bestc=999;//机器2上最短的时间
int c2[10];//作业在机器2上的完成时间
int c1=0;//各个作业在机器1上所花的时间
int x[10];//作业运行的顺序
int bestx[10];//最好的顺序
void swap(int &i,int &j){
int temp=i;
i=j;
j=temp;
}
void backtrack(int k){
if(k>n){
if(c<bestc){
bestc=c;
for(int i=1;i<=n;i++){
bestx[i]=x[i];
}
}
}
else{
for(int i=k;i<=n;i++){//控制根节点的分支
c1+=t[x[i]][1];
if(c2[k-1]<=c1){
c2[k]=c1+t[x[i]][2];
}
else{
c2[k]=c2[k-1]+t[x[i]][2];
}
c+=c2[k];
if(c<bestc){
swap(x[i],x[k]);
backtrack(k+1);
swap(x[i],x[k]);
}
c-=c2[k];
c1-