<< >> 快速使用二进制

使用>> 和<< 可以方便快捷的使用二进制,比如
当我需要求一个二进制数的第五位是不是1时

if(b >> 4 & 1)

当我要给一个数加1000(二进制)时

a += 1 << 3;

如果用二进制来记录数据是否被使用,在有限的数量(相当有限)内是一个不错的选择
可以做一道acwing的递归题来练一下,这是原题链接
https://www.acwing.com/problem/content/94/
y总代码:

#include
using namespace std;
int n;
void dfs(int u ,int state){
    if( u == n){
        for(int i = 0; i< n; i++)
            if(state >> i & 1) 
                cout << i + 1 << " ";
        cout << endl;
        return;
    }
    dfs(u + 1, state); 
    dfs(u + 1, state | 1 << u);  
}
int main(){
    cin >> n;
    dfs(0, 0);
    return 0;
}

你可能感兴趣的:(深度优先,算法,c++)