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)
先感谢您!
它的意思是:“所有位都mask在u”。因此,如果此测试中有一点mask不在,u则返回 false。
例如 with mask=0b001,u=0b011它返回true. 但是 withmask=0b101并且u=0b011它返回,false因为 的第三位mask没有设置在u.