【发布时间】:2012-05-05 11:01:51
【问题描述】:
我有一个有趣的位掩码难题,我需要帮助解决一些问题。问题来了:
11010
每个位代表一段内容的一个特征。它存储在 Redis 中。但是要查询它,我们需要每个组合,以便我们可以拉出密钥。所以11010 会产生这些组合:
11010
10000
10010
11000
01010
00010
01000
有人有 C++ 的解决方案吗?
【问题讨论】:
-
所以基本上你需要类似
if (search_key & item_key) != 0) ...的东西? -
如何在 n^2 中解决?你是说 2^n 吗?
-
您是否在问如何在不到 2^n 的时间内生成最多 2^n 个值的列表?认真的吗?
-
似乎是集合问题的所有子集。这是一个指数算法!
-
啊,看,所以我们需要做的就是确保 n 足够小。然后 2^n 击败 n^2。问题解决了。
标签: c++ binary redis puzzle bitmask