• 课堂小练习—电梯


    一题目及要求

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

    二.设计思路

    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.写程序之前,你可能觉得麻烦,有点困难,但是把它分成一步一步,这样思路清晰,也方便实现。

  • 相关阅读:
    Nginx 负载均衡
    wordpress 页面显示指定分类文章
    Linux 下 wordpress 无法安装插件
    在 Linux 上安装配置 BitTorrent Sync [转]
    nagios 配置 check_traffic 流量监控模块(Server 端)
    install nagios pnp4nagios on centos 6
    bat 脚本处理windows 文件
    Mac 下重新安装配置ibm Lotus 邮箱
    Domino 邮箱服务器接收不存在的邮箱账号的邮件
    Linux 下统计Apache每分钟的并发数
  • 原文地址:https://www.cnblogs.com/menglikanhualuo/p/4439275.html
Copyright © 2020-2023  润新知