当前位置: 首页 > 编程笔记 >

最小平台数问题

燕朝明
2023-03-14
本文向大家介绍最小平台数问题,包括了最小平台数问题的使用技巧和注意事项,需要的朋友参考一下

给出了到达和离开时间的列表。现在的问题是要找到铁路所需的最少平台数,因为没有火车在等待。

通过将所有时间按排序顺序进行排序,我们可以轻松找到解决方案,并且可以轻松地跟踪火车何时到达但尚未离开车站。

此问题的时间复杂度为O(n Log n)。

输入输出

Input:
Lists of arrival time and departure time.
Arrival: {900, 940, 950, 1100, 1500, 1800}
Departure: {910, 1200, 1120, 1130, 1900, 2000}
Output:
Minimum Number of Platforms Required: 3

算法

minPlatform(arrival, departure, int n)

输入-到达时间和出发时间的列表以及列表中的项目数

输出-解决问题所需的最小平台数。

Begin
   sort arrival time list, and departure time list
   platform := 1 and minPlatform := 1
   i := 1 and j := 0

   for elements in arrival list ‘i’ and departure list ‘j’ do
      if arrival[i] < departure[j] then
         platform := platform + 1
         i := i+1
         if platform > minPlatform then
            minPlatform := platform
      else
         platform := platform – 1
         j := j + 1
   done
   return minPlatform
End

示例

#include<iostream>
#include<algorithm>
using namespace std;

int minPlatform(int arrival[], int departure[], int n) {
   sort(arrival, arrival+n);     //sort arrival and departure times
   sort(departure, departure+n);

   int platform = 1, minPlatform = 1;
   int i = 1, j = 0;

   while (i < n && j < n) {
      if (arrival[i] < departure[j]) {
         platform++;     //platform added
         i++;
         if (platform > minPlatform)    //if platform value is greater, update minPlatform
            minPlatform = platform;
      } else {
         platform--;      //delete platform
         j++;
      }
   }
   return minPlatform;
}

int main() {
   int arrival[] = {900, 940, 950, 1100, 1500, 1800};
   int departure[] = {910, 1200, 1120, 1130, 1900, 2000};
   int n = 6;
   cout << "Minimum Number of Platforms Required: " << minPlatform(arrival, departure, n);
}

输出结果

Minimum Number of Platforms Required: 3
 类似资料:
  • 这段时间有空就整理一下上个月的面经,面试是在3月上旬,已凉 1.自我介绍 2.聊项目 3.一道看代码输出题,关于变量提升、this指向、new的原理,很怪的一道题 4.css的clientHeight和offsetHeight的区别? 5.js的数据类型、事件循环 6.垂直居中的方案? 7.看代码输出,事件循环的,偏简单 8.封装一个useRequest,ahooks库里的api 写的不太完美,感

  • 产品介绍 京东小程序为开发者提供一种快速开发方式,连接线上线下购物能力,帮助商家、开发者以全新的方式连接消费者。京东小程序是一种全新的开放模式,在手机京东APP上使用,可以被便捷地获取和传播,为终端用户提供更好的使用体验。京东小程序开发者平台为用户提供创建小程序、小程序开发管理、成员管理等功能。

  • 问题内容: 给出了一个由N个整数组成的非空零索引数组A。一对0(P <Q <N <N)的整数(P,Q)称为数组A的切片(请注意,切片包含至少两个元素)。切片的平均值(P,Q)是A [P] + A [P +1] + … + A [Q]的总和除以切片的长度。确切地说,平均值等于(A [P] + A [P + 1] + … + A [Q])/(Q − P +1)。 例如,数组A这样: 包含以下示例切片:

  • 我的KMP Jetpack Compose项目中继续出现Gradle配置错误 配置项目:共享时出现问题。 找不到名为“testApi”的配置。 我的设置是: Android Studio北极狐狸2020.3.1金丝雀3 项目级别设置 注意:通过删除一部分一部分的配置,我似乎发现问题似乎是围绕着android配置本身,所以如果我删除android()部分 只要简单的jvm()就可以了

  • 我正在开发一个平台,我有一个32x32的精灵和32x32的磁贴。我还使用了一个图块引擎,它在数组的帮助下生成地图。我使用一个< code>RectangleHelper.cs来修复与瓷砖和播放器的碰撞,到目前为止,它可以与瓷砖的顶部碰撞,也可以与瓷砖的左侧碰撞。 在第一张图中,我展示了“在顶部”碰撞工作正常。没有错误什么的。 在图2中,我展示了“碰撞左侧”,这也很棒。 但是在图3中,你可以看到这个

  • 在GCP上部署Spring启动应用程序时,显示了以下错误。 错误:(gcloud.app.deploy)无法上载文件[/home/info/Project1/target/appengine staging/myproject-0.0.1-SNAPSHOT.jar],该文件的大小为[42865605](大于允许的最大大小[33554432])。请删除该文件或添加到应用程序中的skip\u file