二进制遍历 全排列
for(int i=0;i<(1<<n);i++){ //1<<n 运用位运算,定义循环次数,2^n,即列举排列的总次数。
int ans=0;
for(int j=0;j<n;j++){
if(i & (1<<j)){ //
ans+=a[j];
}
}
}
随i的逐步增加,其二进制的1的排列序列也会随着i的增加以字典序进行全排列,在根据j的增加,遍历每一位的1,从而得出1的数量。
二进制遍历 全排列
for(int i=0;i<(1<<n);i++){ //1<<n 运用位运算,定义循环次数,2^n,即列举排列的总次数。
int ans=0;
for(int j=0;j<n;j++){
if(i & (1<<j)){ //
ans+=a[j];
}
}
}
随i的逐步增加,其二进制的1的排列序列也会随着i的增加以字典序进行全排列,在根据j的增加,遍历每一位的1,从而得出1的数量。