电梯(cpp)

【问题描述】

     我们城里最高的建筑物只有一个电梯。请求列表是由n个正数组成的。数字表示电梯在哪个楼层按指定的顺序停车。电梯上一层要6秒,下一层楼要4秒。电梯每站停留5秒。

    对于给定的请求列表,需要计算用于满足列表中请求的总时间。电梯一开始就在零层,当满足要求时不必返回地面。

【输入形式】     每个输入包含一个测试用例。每个案例输入一个正整数n,然后是n个正数。输入的所有数字都小于100。

【输出形式】   对于每个测试用例,在一行上打印总时间。

#include <iostream>

using namespace std;

int main()

{

    int n=1;

    cin>>n;

    int sum1=0,sum2=0,sum;

    int arr[n];

    for(int j=0;j<n;j++)

    {

        cin >>arr[j];

    }

    for(int i=0; i<n; i++)

    {

        if(i+1<n)

        {

            if(arr[i+1]>arr[i])

            {

                sum1+=(arr[i+1]-arr[i])*6+5;

            }

            else if(arr[i+1]<arr[i])

            {

                sum2+=(arr[i]-arr[i+1])*4+5;

            }

        }

    }

    sum=arr[0]*6+sum1+sum2+5;

    cout<<sum<<endl;

    return 0;

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电梯调度算法是指在多层楼房中,通过电梯的运行,使乘客尽快到达目的地的一种算法。常用的电梯调度算法有 FCFS(先来先服务)、SSTF(最短寻找时间优先)、SCAN(扫描)、CSCAN(循环扫描)等。 以下是一个简单的电梯调度算法的C++代码示例,其中使用了SCAN算法: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int current_floor = 1; // 当前电梯所在楼层 int direction = 1; // 1表示上行,-1表示下行 vector<int> requests; // 请求列表 // 模拟电梯接受请求的过程 requests.push_back(5); requests.push_back(3); requests.push_back(7); requests.push_back(2); requests.push_back(6); // 对请求进行排序,按照电梯所在楼层的方向进行排序 sort(requests.begin(), requests.end(), [current_floor, direction](int a, int b) { return (direction == 1) ? (a < b) : (a > b); }); // 执行电梯调度 while (!requests.empty()) { int target_floor = requests.back(); // 获取最后一个请求 requests.pop_back(); // 弹出最后一个请求 // 判断电梯运行方向并输出运行轨迹 if (target_floor > current_floor) { while (current_floor < target_floor) { cout << "电梯上行到达第" << current_floor << "层" << endl; current_floor++; } } else { while (current_floor > target_floor) { cout << "电梯下行到达第" << current_floor << "层" << endl; current_floor--; } } cout << "电梯到达第" << current_floor << "层,开门" << endl; } cout << "电梯调度完成" << endl; return 0; } ``` 该示例代码只是一个简单的电梯调度算法的实现,实际应用中需要考虑更多的因素,如电梯负载、优先级、故障处理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值