:
E1→A1→A2→A3→A4→…An→X1→
E2→B1→B2→B3→B4→…Bn→X2→ 其中 从有A1→B2,B1→A2….Ai→B(i+1), Bi→A(i+1) 在图中不好画出,在此补充。
这个题目应该来说很简单,从i到i+1,第一列中需要比较两次,第二列也需要比较两次,设置两个数组a1,a2;
a1[i]表示从开始到第i+1道工序在第一条生产线上完成所需要的最少时间;
a2[i]表示从开始到第i+1道工序在第二条生产线上完成所需要的最少时间;
代码比较容易写出,但写的比较粗糙。
Code:
#include<iostream>
#include<cstdlib>
#define max 1005
int a1[max];
int a2[max];
using namespace std ;
int main()
{
int n ;
int rezult ;
int E1 , E2 , X1 ,X2 ;
cin>>n ;
cin>>E1 >>E2 >>X1 >>X2 ;
int* p1 =new int[n];
int* p2 =new int[n];
int* T1 =new int[n-1];
int* T2 =new int[n-1];
int i = 0 ;
while(i<n)
cin>>p1[i++];
i=0;
while(i<n)
cin>>p2[i++];
i=0;
while(i<n-1)
cin>>T1[i++];
i=0;
while(i<n-1)
cin>>T2[i++];
int sum1 , sum2 ;
sum1 = a1[0]= E1+p1[0] ;
sum2 = a2[0]= E2+p2[0] ;
for(int i=0;i<n-1;i++)
{
a1[i+1]=a1[i]+p1[i+1];
sum1= a2[i]+T2[i]+p1[i+1];
a1[i+1] = sum1<a1[i+1]? sum1:a1[i+1];
a2[i+1]=a2[i]+p2[i+1];
sum2=a1[i]+T1[i]+p2[i+1];
a2[i+1]=sum2<a2[i+1]?sum2:a2[i+1];
}
delete [] p1 ,p2,T1,T2 ;
a1[n-1]=a1[n-1]+X1;
a2[n-1]=a2[n-1]+X2;
rezult = a1[n-1]<a2[n-1]?a1[n-1]:a2[n-1];
cout<<rezult<<endl;
system(“pause”);
return 0 ;
}
|
阅读(604) | 评论(0) | 转发(1) |