您的位置:首页 > 其它

课堂小练习—电梯

2015-04-19 15:53 232 查看
一题目及要求

由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某一楼层。在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。 问电梯停在那一楼层,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。

二.设计思路

1.先计算出所输入的楼层里最高的层数Max

2.从1遍历到Max,求出每一次的所走楼层和,找出最少的并且输出。

三.源代码

// Elevator.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream.h>
#define MAX 15                  //电梯最大承载人数

//计算数组中最高的楼层
int max_array(int a[],int num)
{
int floor=1;
for(int i=0;i<num;i++)
{
if(floor<a[i])
{
floor=a[i];
}
}
return floor;
}

//两个数求差,大数减小数
int cha(int a,int b)
{
int sum=0;
if(a>=b)
{
sum=a-b;
}
else
{
sum=b-a;
}
return sum;
}
//计算电梯应该到哪一层停
int answer(int a[],int num)
{
int floor,max,sum=0,temp;
max=max_array(a,num);
for(int i=0;i<num;i++)    //令sum为数组的和
{
sum=sum+a[i];
}
for(i=1;i<=max;i++)        //在1楼和最高楼层之间遍历
{
temp=0;
for(int j=0;j<num;j++)//计算在每一层需要走的楼层数的和
{
temp=temp+cha(i,a[j]);
}
if(sum>=temp)        //将走的最少的楼层的和赋值给floor
{
floor=i;
sum=temp;
}
}
return floor;
}
int main()
{
int floor[MAX];
int num=0;

cout<<"请输入电梯中的人数(最多15人):";
cin>>num;

cout<<"请输入要到达的楼层(最高为18层):";
for(int i=0;i<num;i++)
{
cin>>floor[i];
}

cout<<"电梯应该到第"<<answer(floor,num)<<"层停"<<endl;
return 0;
}


四.结果及截图





五.心得体会

1.程序中有的算法和数学关系比较密切,对程序员来说,数学也很重要。

2.写程序之前,你可能觉得麻烦,有点困难,但是把它分成一步一步,这样思路清晰,也方便实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: