algorithm - 找到一组整数的高效算法,如果我们被告知最接近的较低或等于我们告诉的数字

标签 algorithm search integer set

假设我们有一组整数。我们不知道,我们唯一知道的是每个数字都在区间 [0, MAX) 内,而且很明显,数字不会重复。然后,我们需要找到一个集合。我们被允许命名一个整数,然后我们被告知集合中的一个数字,该数字小于或等于我们选择的数字并且最接近它。我们的目的是找到一个尝试次数最少的集合。

例如,让我们有一个集合 [0, 7, 8, 1000],并且 MAX==10000。让 TRY 成为我们可以使用的功能。然后TRY(4)==0, TRY(7)==7, TRY(8)==8, TRY(555)==8 和TRY(7777)==1000。然后我们必须确保我们没有错过任何一个数字,因此我们必须尝试许多其他数字。

问题是:找到集合的最有效算法是什么?尝试间隔中的每个数字显然是不好的。也许我们应该尝试一种类似二进制搜索的算法,它排除集合,保证没有数字 (TRY(7777)==1000,所以 (1000, 7777] 中没有数字)。尝试次数最少的算法是答案。

最佳答案

我可能在这里误解了什么,但在我看来你会从 MAX 开始,从而获得集合中最大的数字。然后继续猜测收到的数字 - 1,直到没有更多数字剩余,或者达到 0。这将需要对每个数字进行一次猜测。

对吧?

关于algorithm - 找到一组整数的高效算法,如果我们被告知最接近的较低或等于我们告诉的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7343827/

相关文章:

c - C 中的简单 AES 函数(不是库)?

c - 搜索字符串的程序中出现段错误

iphone - ipad/iphone/android平台分面搜索

javascript - 使用javascript在不使用循环的情况下搜索对象中的数组

java - 将逗号分隔的字符串转换为整数数组的最佳方法

algorithm - 获取动态变化的日志文件

arrays - 0's and 1' 数组的状态数是多少

c - 旋转二维数组 -> 反转循环

python - int(input()) 的 Lua 等价物是什么?

php - 使用 php 获取 intval()?