c++ - '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)
先感谢您!
解决方案
它的意思是:“都mask
在里面u
”。因此,如果mask
在此测试中未包含位,则u
返回 false。
例如mask=0b001
,u=0b011
它返回true
. 但是使用mask=0b101
andu=0b011
它会返回false
,因为 的第三位mask
未设置在u
.
推荐阅读
- c++ - 如何让 Visual Studio CMake 使用 C/++ Lanuch for minGW/Cygwin (gdb)
- c++ - 在 MacOS 上安装 Boost C++ 库
- python-3.x - 重新缩放强度给出暗图像
- rest - 自 Xamarin Froms 4.5.0.356 以来 HttpClient 的问题
- pandas - total= df.isnull().sum(), percent1= df.count(),percent= df.isnull().count() 有什么区别?
- geolocation - Ionic 5 - 原生 geoloc 问题
- node.js - 如何增加firebase auth token的到期时间,我不想使用firebase客户端,有没有办法只在后端做某事
- javascript - 修改 React Google Chart 中的数据
- ios - 如何修复线程 1:致命错误:索引超出范围
- octave - imshow() 在 Octave 中不显示任何 int16 数组