1.题目:
石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。 由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。 问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
2.设计思路:
我打算用最笨的方法来实现它,记录所有登电梯乘客的楼层信息,从最低的楼层一直计算到最高楼层,进而比较求出其中最优解,从而电梯调度到那一层实现用户要求。
3.源代码:
1 #include2 #include 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<<"请输入乘电梯的人数:"< >n;13 cout<<"请输入您想要去的楼层:"< < n;i++)15 {16 cin>>a[i]; 17 if(a[i] <= 1)18 {19 cout<<"输入错误,请重新输入!"<<"\t";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<<"电梯停在第"< <<"层"<
4.结果截图:
5.心得体会:
还是最笨的方法,没能实现课堂上所说的优化算法,还是有些不足吧,希望以后能在这方面多多练习吧。