一、问题描述
•石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停。信1201-1班的张一东觉得在每层都停觉得不耐烦。
•由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
•问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
二、设计思想
根据乘客的输入楼层,对电梯到达每一楼层时进行计算,然后将其结果存放到一个数组里,比较得出最小的值
并输入。
三、源代码
#include "stdafx.h"#include#define HIGH 6#define N 15void scan(int Input[],int floor[],int num) //用户输入所要到达的楼层{ int i; do { printf("请输入进入电梯的人数(最多15人):"); scanf("%d",&num); if(num>15) printf("您的输入有误!\n"); }while(num>15); printf("请输入每个人到达的楼层:"); for(i = 0;i
四、运行结果
五、总结
我没有采用老师说的那种算法,而是用了最简单的办法,就是一个一个的算出来,在代码的实现方面并没有遇到什么困难。
我的代码设计的是六层高度,根据输入,然后将输入的楼层依次存放在floor[]的数组中,每层 i 每输入依次,则该楼层floor[i]
就加一,最后根据floor[]中的数,算出最小的值。值得一说的是,我把floor[]的长度规定成了7,比楼层的数目要多1,这是因为
这样在输出和计算的时候比较方便的实现。