c++求助01
//这个程序不出结果啊???求解释。
//一个作业必须要先在印刷车间印刷,再到装订车间装订,
//怎样安排加工任务的加工工序,使得加工总工时最少
#include<iostream>
using namespace std;
int job[100][3],x[100],bestx[100],n,f1=0,bestf,f2[100]={0};
void trytry(int);void swap(int,int);
int main()
{int i,j,n;
cout<<"请输入作业的个数:";cin>>n;
cout<<"请依次输入这"<<n<<"个作业在印刷车间的加工时间:";
for(j=1;j<=n;j++)
cin>>job[j][1];
cout<<"请依次输入这"<<n<<"个作业在装订车间的加工时间:";
for(j=1;j<=n;j++)
cin>>job[j][2];
bestf=32767;
for(i=1;i<=n;i++)
x[i]=i;
trytry(1);
cout<<"加工顺序如下:"<<endl;
for(i=1;i<=n;i++)
cout<<bestx[i]<<" ";
cout<<endl<<"最少加工时间为:"<<bestf<<endl;
return 0;
}
void trytry(int i)
{int j;
if(i==n+1)
{for(j=1;j<=n;j++)
bestx[j]=x[j];
bestf=f2[i-1];
}
else
for(j=i;j<=n;j++)
{f1=f1+job[x[j]][1];
if(f2[i-1]>f1)f2[i]=f2[i-1]+job[x[j]][2];
else f2[i]=f1+job[x[j]][2];
if(f2[i]<bestf)
{swap(x[i],x[j]);
trytry(i+1);
swap(x[i],x[j]);
}
f1=f1-job[x[j]][1];
}
}
void swap(int t1,int t2)
{int t;
t=t1;t1=t2;t2=t;
}