- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在实习面试中遇到了以下问题,我仍然想知道最好的解决方案是什么。
问题:
假设您正在玩猜谜游戏。您可以猜出 1 到 n 之间的一个数字,并且您有一个 API 可以告诉您数字是大还是小。
现在假设每个猜测都是加权的(即你猜 20,所以成本是 20)
创建一个算法来找到最小化成本的最佳第一次猜测。
我在想什么:
在问题的正常版本(没有权重)中,解决方案是简单的二分查找。
但是,在这种情况下,我认为我需要对所有可能的猜测序列执行平均案例分析,这会增加解决方案的复杂性。例如,我从猜测 20 开始,所以我将数字为 20 的成本包括在内,然后通过在较小的空间上执行类似的操作来找到下一个最佳猜测(假定我不再猜测 20)。我对所有第一次猜测都执行此操作,然后取最小值。
如有任何帮助,我们将不胜感激。
最佳答案
我认为这是一个动态规划问题,您最终会计算出所有区间 [i, j] 的最佳成本的成本,其中 1 <= i <= j <= 20。
对于 i=j,猜测 {i} 的成本是 i。
要找到区间 [i, j] 的最佳猜测成本,您需要考虑 i <= k <= j 的所有可能猜测 k。使用猜测 k 的总成本是 k + p * [i, k-1] 的最佳成本 + q * [k+1, j] 的最佳成本。 (当 i > j 时,[i, j] 的成本为 0)。假设您要平均成本,那么 p 将是 (k - i)/(j + 1 - i) 并且 q 将是 (j - k)/(j + 1 - i) 这些应该是目标的概率在 [i, k - 1] 和 [k + 1, j] 中。
您从大小为 1 的所有区间的最佳成本开始。您可以根据这些计算大小为 2 的所有区间的最佳成本,然后继续计算大小为 20 的所有区间的最佳成本。然后,您通常会回溯找出每个阶段的所有最佳决策,可能会使用您在计算成本时存储的信息。但在你的情况下,你只需要知道最好的第一个猜测,所以你可以在计算时存储它。
对于 N=20,您有 O(N^2) 个最佳成本需要计算,每个成本不超过 O(N) 个工作量,因此我们有一个 O(N^3) 个算法。不是很好,但完全不像指数,而且对于 N=20 来说完全可以负担得起。
关于algorithm - 猜谜游戏加权最佳猜测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775765/
我的问题在于处理大型 CSV 文件中的数据。 我正在寻找基于在该列中找到的值来确定(即猜测)该列的数据类型的最有效方法。我可能正在处理非常困惑的数据。因此,该算法应该具有一定的容错性。 这是一个例子:
我正在开发一个基于 map 的网络应用程序,我想为用户提供“使用当前位置”的功能 我可以轻松检查地理位置 api 的可用性,如下所示: if (navigator && navigator.geolo
我有一大组日期时间字符串,可以放心地假设它们的格式都相同。例如,我可能有一组日期“7/1/13 0:45”、“5/2/13 6:21”、“7/15/13 1:24”、“7/9/13 12” :41",
我正在尝试对是否可以接收 C2DM 消息进行最佳猜测。 我创建了一个应用程序,它依赖于在物理上无法访问时将信息推送到手机。我知道 C2DM 不能保证传递,但我至少想知道何时可以传递消息;如果不是,我们
我正在编写一个系统,以便用户可以编辑他发布的内容。简化它是一个存储在数据库中的文本区域/输入字段和一个检索它的页面。问题是,我认为编码不正确,因为字符串存储在数据库中,如“É”或其他东西(phpmya
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
只是好奇,但匹配 Guid 的概率是多少? 从 SQL 服务器说一个 Guid:5AC7E650-CFC3-4534-803C-E7E5BBE29B3D 它是阶乘吗?:(36 * 32)! = (11
这个问题已经有答案了: Guessing algorithm does not seem to work, guessing number by Python (3 个回答) 已关闭 5 年前。 程序
我正在创建一个非常简单的计算器,但我需要它在每次击键时进行更新。我似乎找不到该特定类别中的任何内容。有人能指出我正确的方向吗? 我正在寻找类似 A*1.325 + B*3.76 的内容,其中 B 是下
环顾四周this似乎是最接近我的问题的答案。然而它会导致其他问题...... 这是我的情况: $element.insertBefore($container); 此行有一个警告,指出 insertB
当我收到此页面时 http://booking.airasia.com/css/AKBase/Cultures/en-GB/far-min.css与 Node 的 http , toString方法给
我在代码中发现了这一点,但不知道哪个实例接收到。 var guess = require ('myModule1') ('myMmodule2') 最佳答案 看来 myModule1 导出了一个函数,
WARNING: No name was provided for external module 'moment' in output.globals – guessing 'momentImpor
我是一名优秀的程序员,十分优秀!