【2014-01-08】《编程之美》读书笔记:电梯调度算法
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2014-01-08 标题《编程之美》读书笔记电梯调度算法分类编程 / java / 编程之美 标签java·编程之美·电梯调度《编程之美》读书笔记电梯调度算法1.8小飞的电梯调度算法解法1解法2最近在学习《 编程之美 》这本书书中提到了很多很经典的算法问题和实现学起来真是耗费脑细胞啊。书中的算法实现使用C编写的这里作者自己写了一部分java的实现如果有错误还请各位读者批评指正。截图版权属于原作者。githubhttps://github.com/cstriker1407/think_in_java1.8小飞的电梯调度算法生成测试数据RandomrandomnewRandom();intfloorNumsrandom.nextInt(10)1;System.out.println(电梯总层数(floorNums));int[]peopleNumsnewint;for(inti0;ipeopleNums.length;i){peopleNumsrandom.nextInt(20);System.out.println(第[(i1)]层的乘客数目为peopleNums);}解法1publicstaticvoidliftDispatchA(int[]peopleNums){intfloorNumpeopleNums.length;intminUse-1;intbestFloor-1;for(inti0;ifloorNum;i){intthisUse0;/* i 代表当前停留楼层从0计数 */for(intj0;jfloorNum;j){thisUseMath.abs(i-j)*peopleNums;}if(minUse-1||minUsethisUse){minUsethisUse;bestFloori;}}System.out.println(最优停留楼层(bestFloor1));System.out.println(耗费人力minUse);}解法2publicstaticvoidliftDispatchB(int[]peopleNums){intfloorNumpeopleNums.length;/* 以电梯停留在第0层开始从0计数 */intN10;intN2peopleNums[0];intN30;intminUse0;intbestFloor0;for(inti1;ifloorNum;i){N3peopleNums;minUsepeopleNums*i;}/* * F(i1) F(i) N1 N2 - N3 * 如果N1 N2 N3则可以推出 F(i1) F(i) * 同时由于从电梯0层开始向上计数因此N1增加N3减小一旦在某一层上N1 N2 N3那么剩余的电梯层必然也会N1 N2 N3 * 就可以不用计算了 */for(inti1;ifloorNum;i){if(N1N2N3){break;}else{bestFloori;minUseminUseN1N2-N3;N1N2;N2peopleNums;N3-peopleNums;}}System.out.println(最优停留楼层(bestFloor1));System.out.println(耗费人力minUse);}

相关新闻

【2014-01-02】《Java编程思想》读书笔记:randomaccessfile

【2014-01-02】《Java编程思想》读书笔记:randomaccessfile

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2014-01-02 | 标题:《Java编程思想》读书笔记:randomaccessfile | 分类: 编程 / java / think_…

2026/7/17 6:24:52 阅读更多 →
C++结构体数组:数据组织、内存管理与实战应用详解

C++结构体数组:数据组织、内存管理与实战应用详解

1. 项目概述:当数组与结构体相遇在C的世界里,我们每天都在和数据打交道。单个的整数、浮点数,或者一个字符串,处理起来还算简单。但现实世界的数据往往是复杂的、成组的。比如,你要管理一个班级的学生信息,…

2026/7/17 6:22:51 阅读更多 →
Ubuntu 22.04中文界面设置与输入法配置指南

Ubuntu 22.04中文界面设置与输入法配置指南

1. Ubuntu 22.04 中文界面设置的必要性在Linux桌面环境中,语言本地化是提升用户体验的关键环节。对于中文用户而言,将Ubuntu 22.04的界面语言切换为中文不仅能降低使用门槛,还能避免因语言障碍导致的配置错误。根据2023年Linux基金会调查报告…

2026/7/17 6:22:51 阅读更多 →

最新新闻

AI代理时代的约束工程:Harness Engineering详解

AI代理时代的约束工程:Harness Engineering详解

1. 什么是Harness Engineering?AI代理时代的工程范式革命2016年DeepMind的AlphaGo击败李世石时,我们惊叹于AI的决策能力;2022年ChatGPT横空出世,我们震撼于大语言模型的通用智能;而到了2026年的今天,AI代理…

2026/7/17 7:07:07 阅读更多 →
Linux nohup命令详解:后台进程管理与实践

Linux nohup命令详解:后台进程管理与实践

1. nohup 命令的基本概念与作用nohup 是 Linux/Unix 系统中的一个常用命令,全称为"no hang up"(不挂断)。这个命令的核心作用是让进程在用户退出终端后仍然能够继续运行,而不会被系统终止。这对于需要长时间运行的后台任…

2026/7/17 7:03:06 阅读更多 →
深入解析Linux文件系统接口与性能优化实践

深入解析Linux文件系统接口与性能优化实践

1. 文件系统接口概述文件系统接口是操作系统提供给用户程序访问存储设备的核心机制。作为连接应用程序和物理存储设备的桥梁,它定义了标准化的访问方式,使得程序无需关心底层硬件差异就能进行文件操作。现代操作系统通常提供两类接口:面向开发…

2026/7/17 7:01:04 阅读更多 →
纯Python实现XXTEA解密:原理、代码与实战指南

纯Python实现XXTEA解密:原理、代码与实战指南

1. 项目概述:为什么我们需要一个纯Python的XXTEA解密实现? 在数据处理和通信安全领域,加密解密算法是构建信任的基石。你可能听说过AES、DES这些大名鼎鼎的算法,但在一些特定的场景,比如嵌入式设备、轻量级协议或者历史…

2026/7/17 6:57:02 阅读更多 →
GitHub学Python:从零基础到开源贡献的实战路径

GitHub学Python:从零基础到开源贡献的实战路径

很多人学Python卡在第一步:看视频觉得慢,看书又枯燥,写代码没方向。其实最快的方式就在眼前——GitHub。这不是什么新发现,但大多数人根本没用好这个免费资源库。 GitHub上有超过73000个Python相关项目,从Python语言源…

2026/7/17 6:57:02 阅读更多 →
Go语言热修复实战:从原理到优雅更新架构设计

Go语言热修复实战:从原理到优雅更新架构设计

1. 项目概述:当Go语言遇见热修复 最近在社区里看到不少关于Go语言热修复的讨论,尤其是在一些对服务可用性要求极高的场景下,比如在线游戏服务器、金融交易系统或者7x24小时运行的微服务集群。传统的服务更新流程——停机、部署、重启——带来…

2026/7/17 6:53:01 阅读更多 →

日新闻

2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制

2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制

2026全国外贸独立站搭建公司推荐排行 外贸工厂、工贸企业建设官网,核心需求与普通展示型网站并不相同。除了页面整洁、多语言适配和海外访问体验,企业还要重点考虑数据能否导出、站点能否迁移、源码是否可控、后续费用是否透明,以及更换服务…

2026/7/17 0:02:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析

HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析

3D 翻转动画实现——ArkTS 动画系统全解析引言 在移动应用中,卡片翻转动画是最受欢迎的交互动效之一,它能给用户带来直观的"物理世界"操作感。在我们的英语学习 App 的单词学习页面(CourseHomePage.ets)中,就…

2026/7/17 0:02:10 阅读更多 →
2026键盘推荐|IQUNIX EV63多场景适配,不允许有人不知道!

2026键盘推荐|IQUNIX EV63多场景适配,不允许有人不知道!

现在很多用户都需要一款能适配多场景的键盘,既能满足交流码字的需求,又能应对居家电竞的性能需求,最好还得有点小颜值。而大多键盘都只能兼顾其中一两个场景。这次我实测了IQUNIX EV63三款配色(银武士、黑武士、紫罗兰&#xff09…

2026/7/17 0:04:10 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/17 3:22:28 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/17 3:01:28 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/16 23:40:37 阅读更多 →

月新闻