algorithm - 我如何猜测(最佳搜索算法)系统中只能回答是或否的任何正整数?
问题描述
假设您猜对了数字,系统只会给出“是”或“否”。让我们举两个例子
1. 数字 = 3
2.号码=134567894567
如您所见,如果您进行线性调用,则可以找到第一个数字,例如:-
is the number = 1? No
is the number = 2? No
is the number = 3? Yes
所以线性搜索算法会更容易实现。
但是,如果元素与134567894567一样大,那么使用二进制搜索方式可能会有意义。如何构建一个提供最佳结果的系统,同时牢记上述限制。
解决方案
如果系统会给你一个是/否的答案,你就不能使用二分搜索。您需要使用线性搜索。
为了使用二分查找,条件是:
- 范围必须有界。
- 在每次“猜测”时,它都必须告诉你你需要前进的方向。
这是使用二分搜索的最低要求。因此,对于您目前没有获得所需信息的情况,您必须按照最初的建议使用线性搜索。
推荐阅读
- angular - 如果 Angular 的本地存储中有数据,如何将默认主页路径“”更改为不同的路由
- javascript - 在 Playwright 中使用关键字数组并循环遍历脚本
- spring - spring-boot中如何实现行级授权?
- excel - Excel VBA:如何让 COUNTIF 函数不将文本单元格“1.1”和“1.10”作为重复项?
- configuration - Hue 和 Impala 连接问题 Thrift Handle 异常
- python - Pymongo 和更新记录
- node.js - 未找到模块:错误:无法解析 'D:\laravel projects\codeGram\resources\js\components' 中的 '../../../vue-temp/vue-editor-bridge'
- r - 如何获得这些由“;”分隔的字符串的唯一出现?
- python-3.x - 如何在 Docker PUSH 中排除 VENV
- amazon-web-services - 在 AWS SWF 工作流程中安排的计时器是否会无法返回时钟?