1.题目:
石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。 由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。 问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
2.设计思路:
我打算用最笨的方法来实现它,记录所有登电梯乘客的楼层信息,从最低的楼层一直计算到最高楼层,进而比较求出其中最优解,从而电梯调度到那一层实现用户要求。
3.源代码:
1 #include<iostream> 2 #include<math.h> 3 using namespace std; 4 int main() 5 { 6 int i,j; 7 int m; 8 int sum[18],summin; 9 int max=2,min,n=0; 10 int a[15]={0}; 11 cout<<"请输入乘电梯的人数:"<<endl; 12 cin>>n; 13 cout<<"请输入您想要去的楼层:"<<endl; 14 for(i = 0;i < n;i++) 15 { 16 cin>>a[i]; 17 if(a[i] <= 1) 18 { 19 cout<<"输入错误,请重新输入!"<<" "; 20 cin>>a[i]; 21 } 22 } 23 min = a[0]; 24 for(i = 0;i < n;i++) 25 { 26 if(a[i] > max) 27 { 28 max = a[i]; 29 } 30 if(a[i] <= min) 31 { 32 min = a[i]; 33 } 34 } 35 for(j = min;j <= max;j++) 36 { 37 sum[j] = 0; 38 for(i = 0;i < n;i++) 39 { 40 sum[j] += abs(a[i] - j); 41 } 42 } 43 summin = sum[min]; 44 m = min; 45 for(j = min;j <= max;j++) 46 { 47 if(sum[j] < summin ) 48 { 49 summin = sum[j]; 50 m = j; 51 } 52 } 53 cout<<"电梯停在第"<<m<<"层"<<endl; 54 return 0; 55 }
4.结果截图:
5.心得体会:
还是最笨的方法,没能实现课堂上所说的优化算法,还是有些不足吧,希望以后能在这方面多多练习吧。