'if((mask | u)==u)' 是什么意思?

2 c++ if-statement bitwise-operators

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

完整的代码是:

if ((mask | u) == u)
    dp[u] = max(max(0, dp[u ^ mask] + array[I], dp[u]);
Run Code Online (Sandbox Code Playgroud)

下面的 if 语句究竟是什么意思?

if((mask | u) == u)
Run Code Online (Sandbox Code Playgroud)

先感谢您!

Gui*_*ris 6

它的意思是:“所有位都masku”。因此,如果此测试中有一点mask不在,u则返回 false。

例如 with mask=0b001u=0b011它返回true. 但是 withmask=0b101并且u=0b011它返回,false因为 的第三位mask没有设置在u.