题解 | #序列的与和#
序列的与和
https://ac.nowcoder.com/acm/contest/62880/B
第G题
思路参照了大佬的解法,所以想把自己对大佬解法的理解写下来
#include<bits/stdc++.h> using namespace std; int n,k,a[100],ans; void dfs(int x,int d) //深度优先搜索 { int t,cnt=0; t=d; while(t) { if(t&1)cnt++; //&是两个数转化为二进制再开始比较,要判断t中有多少个1,可以与1进行匹配 t>>=1; //每次将t的二进制往后移一位就可以 } if(cnt==k)ans++; //当1的数量满足条件,答案数+1 for(int i=x+1;i<n;i++)dfs(i,d&a[i]); //继续搜索 } int main() { cin>>n>>k; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<n;i++)dfs(i,a[i]); cout<<ans; }