📄 timu.cpp
字号:
#include <iostream.h>
#include<new.h>
void couttime(int *pt,int *ps,int n,int m)//计算时间的函数
{
int i,j,k,rem,t,t_w=0,add_t1,add_t2,total_t;
int *ji=new int[n]; // 记录
int *ta=new int[n]; //每个工用了的时间
int **biaoji;
biaoji = new int*[n];
for (i=0; i<n; i++)
{
biaoji[i] = new int[m];
}
i=j=k=0;
add_t1=add_t2=total_t=0;
for(i=0;i<n;i++)
{
ji[i]=ta[i]=0;
for(j=0;j<m;j++)
{
biaoji[i][j]=1;
}
}
for(t=1;t_w==0&&t<1100;t++)
{
for(i=0;i<n;i++)
{
rem=ji[i];
rem=ps[i*m+rem];
if(t-ta[i]>=pt[i*m+rem])
{
int b=1;
for(j=0;j<i;j++)
{
if(biaoji[j][rem]==1)
{
b=0; break;
}
}
if(b==1)//若此工件的前面的工序都完成了
{
biaoji[i][rem]=0;
ji[i]++;
ta[i]=t;
}
}
}
t_w=1;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(biaoji[i][j]==1)
{
t_w=0; break;
}
}
if(t_w==0) break;
}
}
total_t=t-1;
cout<<endl<<"加工花费的时间为 : "<<total_t<<endl<<endl;
}
void main()
{
int time[2][22]={2,4,8,9,21,23,6,2,8,5,71,13,3,33,17,22,9,1,27,39,3,5,
7,5,6,11,7,8,3,9,2,22,69,8,7,42,4,16,9,8,15,14,18,28};
int biaoji[22]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int i,j,k,t,a_or_b,sa_or_b;
int sa=0,sb=21,shunxu[2][22];
for(k=0;k<22;k++)
{
t=0;
for(i=0;i<2;i++) //第 1 步
{
for(j=0;j<22;j++)
{
if(t==0 && biaoji[j]==1)
{
t=time[i][j];
a_or_b=i;
sa_or_b=j;
}
if(t>time[i][j]&& biaoji[j]==1)
{
t=time[i][j];
a_or_b=i;
sa_or_b=j;
}
}
}
if(a_or_b==0) //第 2 步
{
shunxu[0][sa]=sa_or_b;
sa++;
}
else
{
shunxu[0][sb]=sa_or_b;
sb--;
}
biaoji[sa_or_b]=0; //第 3 步
}
for(k=0;k<22;k++)
{
shunxu[1][k]=shunxu[0][k];
}
cout<<endl<<endl;
cout<<"在第一机器上的加工次序为:"<<endl; //输出结果
for(i=0;i<22;i++)
{
cout<<shunxu[0][i]+1<<"\t";
}
cout<<endl<<endl<<"在第二机器上的加工次序为:"<<endl;
for(i=0;i<22;i++)
{
cout<<shunxu[1][i]+1<<"\t";
}
cout<<endl;
int *pt,*ps;
pt=time[0];
ps=shunxu[0];
couttime(pt,ps,2,22); //调用函数算出其花费的时间
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -