1,思路不难,感觉第一步是个排列组合,剩下就算差值枚举比较了。
2,mask的长度应该是指的是位数吧?比如8,就8位.
omask是这个意思。
3,这tm也太长了。
12.12
再看
_builtin_popcount()计算二进制中多少个1
GCC里面的内置函数
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。) [1]
for (int j = 0; j < n; ++j) {
if (sub & (1 << j)) {
++freq[nums[j]];
}
还是不懂这个
先放着吧
1 <= nums[i] <= nums.length
所以那个判断重复
从j=1开始到j=n结束。
确实用这种块化思维
起码更容易记住了
急于证明自己的可怜人
枚举子集的模板是不是要记忆下
(int a=b;a;a=(a-1)&b))
vector value(1<<n,-1);
for(int sub=0;sub<=(1<<n);sub++)
{
if((mask))
{
for(int j=0;j<n;j