- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我被问到一个问题,要求我编写一个最佳程序来确定一部电梯为 X 个人服务而停靠的总次数。问题描述如下。
在 M 层的建筑物中有一部电梯,该电梯一次最多可搭载 X 人或最大总重量 Y。假设一组人已经到达,并且他们的体重和他们需要到达的楼层考虑到电梯为所有人服务而停了多少站。按照先到先得的原则考虑电梯服务。
例如设数组 A 为要考虑的人的体重A[] = {60, 80, 40 }
设数组B分别为需要下人的楼层B[] = {2, 3, 5}
大楼总层数为 5,电梯一次最多允许 2 人,最大载重量为 200对于此示例,电梯将总共停靠 5 个楼层 ground, 2, 3,ground, 5 , ground
对此的最佳代码是什么?
我的解决方案之一如下。还有其他更好的解决方案吗?
class Solution
{
/// <summary>
/// Return total stops used
/// </summary>
/// <param name="A">weight of people</param>
/// <param name="B">floors they need to get down</param>
/// <param name="M">total floors in the building</param>
/// <param name="X">Max people to carry at a time</param>
/// <param name="Y">max weight to carry at a time</param>
/// <returns></returns>
public int solution(int[] A, int[] B, int M, int X, int Y)
{
// write your code in C# 6.0 with .NET 4.5 (Mono)
int totalStops = 0;
long totalWeightPerRound = 0;
int maxPersonsCount = 0;
List<int> lstFloors = new List<int>();
int currPerson = 0;
bool startLift = false;
while (currPerson < A.Length)
{
if ((totalWeightPerRound + A[currPerson]) <= Y && (maxPersonsCount+1) <= X)
{
totalWeightPerRound += A[currPerson];
maxPersonsCount++;
lstFloors.Add(B[currPerson]);
if (currPerson == A.Length - 1)
startLift = true;
currPerson++;
}
else
{
startLift = true;
}
if (startLift)
{
totalStops += lstFloors.Distinct().Count() + 1;
lstFloors.Clear();
maxPersonsCount = 0;
totalWeightPerRound = 0;
startLift = false;
}
}
return totalStops;
}
}
最佳答案
也许有点跑题,但正如上面有人所说,这是一道数学题,而不是编程题。为了安全起见,您应该构造一个泛函来描述您想要最小化的成本函数,添加约束以包括边界条件,最后计算变化以获得极值。
换句话说,这是一项非常重要的数学任务,在尝试编写一行代码之前,您应该真正专注于正确掌握数学知识。优化意味着获得最佳解决方案,而不仅仅是一些解决方案;)
关于c# - 确定电梯总停靠次数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33885921/
它类似于背包问题,但更复杂。 A到B有电梯,1趟价格如下: 1) 如果只有一个人 - 以美分为单位的高度 - 如果 180 -> 180 美分 2) 如果超过一个人 -> 最大高度:[180, 150
我是新手,正在尝试编写一个简单的登录应用程序。当我离开登录页面一段时间并输入用户名和密码时,它不会登录,而是会执行 session 过期行为。我检查了日志,发现每当我收到 INFO - Session
有没有人尝试使用 MVC 而不是 View 优先来做一个 scala/lift 应用程序? 我知道您可以将 Controller / View 创建为: package test.test.test.
我正在阅读 Silberschatz's OS book .在第 16.8.1 节中说: The fundamental problem with the elevator algorithm is
由于 Lift 是有状态的,因此对页面/网站的每个后续请求都必须返回到同一台服务器。据推测,这意味着前端负载平衡器需要跟踪哪个客户端正在与哪个服务器通信。 在像 Heroku/Elastic Bean
是否可以将 Lift 的 CSS 选择器转换与 DispatchSnippet 一起使用?它似乎对我不起作用。 最佳答案 回答我自己的问题...是的,这是可能的!我的问题如下:代码片段方法必须是 No
如何在 Eclipse 中为 Scala/Lift 项目设置热部署? 基本上,我希望能够 建立一个新项目,例如 lift-archetype-basic 从一些运行配置或通过终端启动 jetty:ru
我正在阅读 Gilberto T. Garcia Jr 编写的 Lift 应用程序开发指南,但遇到了一个我似乎无法解决的问题。我已经复制了源代码 Chap06-map-table,并尝试修改它以与我的
我有一些无法更改的奇怪 json,我希望使用电梯中的 JsonParsen。 一个典型的 json 是这样的: {"name":"xxx", "data":{ "data_1
我正在尝试编写一个 Specs2 测试,该测试将测试片段的输出以响应通常从模板传入的不同参数,但我无法弄清楚如何去做。 例如,使用此 div 中的代码段标注: 我将参数 param1 传递给代码段。
我以前从未问过论坛问题,所以如果我违反规则是无意的,我很抱歉。 我在 IntelliJ Idea IDE 中使用 scala/lift 和 jetty 制作了一个网络应用程序。我有一个为 .net 框
我是一名优秀的程序员,十分优秀!