考虑一下我分配了如下值的场景
亚马逊-1 沃尔玛-2 目标-4 Costco 8 BJS-16
在DB中,数据是通过掩蔽这些值来存储的,这些值是根据每个产品的可用性来存储的。例如,
掩模产品描述 亚马逊提供1台膝上型计算机 17 iPhone可在亚马逊和BJ获得 在Costco和BJ's提供24张床垫
就像这些产品一样,所有的产品都被屏蔽并存储在DB中。
如何根据蒙面价值来检索所有零售商。例如,对于床垫,蒙面价值是24。然后,我将如何找到或列出Costco &BJ的程序。任何算法/逻辑都将受到高度赞赏。
发布于 2010-03-01 00:21:48
int mattress = 24;
int mask = 1;
for(int i = 0; i < num_stores; ++i) {
if(mask & mattress != 0) {
System.out.println("Store "+i+" has mattresses!");
}
mask = mask << 1;
}如果床垫值具有与掩码集相同的位,则if语句对这些位对齐,然后是出售床垫的掩码存储区。当商店出售床垫时,床垫值和面罩值只有非零。对于每次迭代,我们将掩码位向左移动一个位置。
注意,掩码值应该是正的,而不是负的,如果需要的话,可以乘以负的。
发布于 2010-03-01 00:44:58
假设您是指在SQL数据库中,那么在检索SQL中,通常可以添加WHERE (MyField和16) = 16,其中(MyField和24) = 24等等。
但是,请注意,如果您试图优化这样的检索,并且通常与查询匹配的行数要比总行数小得多,那么这可能不是表示这些数据的非常好的方法。在这种情况下,最好有一个单独的"ProductStore“表,其中包含(ProductID,StoreID)对表示该信息(并在StoreID上进行索引)。
发布于 2010-03-01 01:13:25
https://stackoverflow.com/questions/2353254
复制相似问题