首页 > 解决方案 > 'if((mask | u)==u)' 是什么意思?

问题描述

这就是maximum sum子集问题的递归关系。

完整的代码是:

if ((mask | u) == u)
    dp[u] = max(max(0, dp[u ^ mask] + array[I], dp[u]);

下面的 if 语句到底是什么意思?

if((mask | u) == u)

先感谢您!

标签: c++if-statementbitwise-operators

解决方案


它的意思是:“都mask在里面u”。因此,如果mask在此测试中未包含位,则u返回 false。

例如mask=0b001u=0b011它返回true. 但是使用mask=0b101andu=0b011它会返回false,因为 的第三位mask未设置在u.


推荐阅读