public class AptElevator {
/**
* 编程之美 小飞 电梯调度算法
* 在繁忙的时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。
* 所有乘客都从一楼上电梯,到达某层楼后,电梯听下来,所有乘客再从这里爬楼梯到自己的目的层。
* 在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
* 问:电梯停在哪一层楼,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少?
思路:当电梯停靠在第i层时,乘客所要爬的总的楼梯数为Y.
假设有N1个乘客要到达的层数<i,有N2个乘客要到达的层数==i,有N3个乘客要到达的层数>i.
所以有:
(1)当电梯改停在i-1,则 Y+(N2+N3-N1)
(2)当电梯改停在i+1,则 Y+(N1+N2-N3)
所以当后面那部分的值<0时(如(2)的N1+N2<N3),则加上负数后总的楼梯数比原来的小,即更优解.
因此,我们可以从第一层开始,用以上策略,考察N1,N2,N3的值,依次调整以得到最优解.
*/
private int targetFloor;//电梯应该停靠在哪一层
private int minStairs;//不能直达的乘客共要走多少层楼梯
public static void main(String[] args) {
AptElevator elevator=new AptElevator();
int[] person={0,2,5,7,8,9,6,6,1,4,4,8,5,2,4,5,8,6,3,3,5,9,9,6,6,9,8,8,5,5,9,6,6,3};//person[i]表示要到第i层的人数
elevator.opt(person);
System.out.println(elevator.targetFloor+","+elevator.minStairs);
}
public AptElevator(){
this.targetFloor=0;
this.minStairs=0;
}
public void opt(int[] person){
if(person==null){
return;
}
if(person.length<2){//如果没有人到二楼或者更高,那就不用坐电梯了
return;
}
int N=person.length-1;
targetFloor=2;//先让电梯停在二楼,计算N1,N2
int N1=0;
int N2=person[2];
int N3=0;
//电梯停在二楼,计算N3以及总楼梯数MinFloor
for(int j=3;j<=N;j++){
N3+=person[j];
minStairs+=person[j]*(j-targetFloor);
}
//让电梯依次改停在3楼、4楼...N楼,出现更优解时,则调整电梯停靠层数以及N1,N2,N3
for(int i=3;i<=N;i++){
if(N1+N2<N3){
targetFloor=i;
N1=N1+N2;
N2=person[i];
N3=N3-person[i];
minStairs+=N1+N2-N3;
}
}
}
}
分享到:
相关推荐
综上所述,小飞熊下载系统终结版 Build 1123是一个复杂的系统,涉及到的技术包括但不限于:多线程/异步编程、断点续传、Web框架开发、数据库设计、HTTP协议、CDN技术、网络安全、软件工程实践以及API设计。...
主动网络的主要特征是网络中间节点可动态编程,因此网络的行为、性能可以随用户的编程而动态地变化,适应不同应用的需要,呈现柔性的特点。 本论文的工作得到国家自然科学基金,下一代网络体系结构、协议模型与机制...
【标题】"小飞拿shell专用"所提及的是一个专门设计用于shell操作的工具或脚本,由小飞开发,并且具有优秀的免杀性能和稳定性。在IT领域,shell通常指的是命令行接口(CLI)或者操作系统提供的交互式环境,允许用户...
- 对用户输入的密码进行加密处理,如使用MD5或SHA算法,以增加安全性。 - 处理服务器返回的结果,展示注册或登录的成功/失败信息。 3. **安全措施**: - 数据传输过程中使用HTTPS协议确保数据的安全性。 - 存储...
"小飞熊下载系统"是一个专门...总的来说,"小飞熊下载系统"提供了从源码层面研究和学习下载管理系统的机会,对于开发者而言,这是一个宝贵的资源,可以帮助他们提升在系统设计、网络编程、资源管理等多个领域的技能。
A*算法是一种经典的启发式搜索算法,用于在图形结构中找到从起始节点到目标节点的最短路径。它在游戏开发、地图导航、网络路由等领域广泛应用。在Python中实现A*算法,尤其是在二维网格地图中解决避障寻路问题时,...
可以使用哈希算法(如SHA-256)加上盐值进行加密。同时,所有网络通信应使用HTTPS以保证传输安全。 7. **错误处理与异常捕获**: 在客户端和服务器端都需要处理可能出现的错误情况,如网络连接失败、无效的用户输入...
这可能是指一个由开发者陈小飞编写的Java代码示例或项目,编号为33,可能是他的系列作品之一。Java是一种广泛使用的面向对象的编程语言,以其跨平台的特性、丰富的类库和强大的功能而闻名。这里,我们有两个文件:`...
行业资料-交通装置-一种摩托车节能小飞.zip
小飞数据恢复工具是一款可以帮助用户快速回复数据的工具,这款工具能快速...小飞数据恢复工具通过优化扫描算法,能快速扫描磁盘,让用户减少等待扫描时间. 深度恢复 小飞数据恢复工具以扇区为单位扫描磁盘,深度的寻
"小飞熊下载系统终结版 Build 1123"是一款专为下载管理设计的软件,旨在优化用户的文件下载体验。本次更新版本为Build 1123,它带来了一系列的改进和修复,以提升系统的稳定性和用户体验。 首先,前端界面的全面...
首先,“0680210119”这个数字序列可能表示的是一个特定的日期,例如刘小飞某个重要项目的启动日期、完成日期或者是他的生日等,而刘小飞的名字则可能代表该文件包含的个人信息或者与之相关的工作成果。使用ZIP格式...