bitset的用法:https://www.cnblogs.com/magisk/p/8809922.html
https://blog.csdn.net/caipengbenren/article/details/90443961
例题汇总 https://blog.csdn.net/weixin_38686780/article/details/89377729
连接:富豪凯匹配串
题解:根据与运算的特点,只有为两个1时为1,否则为0。根据题意当‘_’遇到0/1时都是匹配成功的,我们不妨把'‘_’设置为0,其余设置为1,然后让这个数组和输入的n个数组运算,得到的然后判断得到的串与输入的串是否相同。
AC代码:
#include<bits/stdc++.h> using namespace std; const int N=1E3+7; bitset<N>arr[N],q,p; int main(){ int n,m; cin>>n>>m; char s[N]; for(int i=1;i<=n;i++) { scanf("%s",s); for(int j=0;j<m;j++){ if(s[j]=='0') arr[i][j]=0; else arr[i][j]=1; } } int qq; cin>>qq; while(qq--){ string s; cin>>s; for(int i=0;i<m;i++){ if(s[i]=='_') q[i]=p[i]=0; else { p[i]=1;//将p串除了"_"外,其余全都设置为1,然后让其余输入的做与运算,并判断和输入的q是否相同 if(s[i]=='1') { q[i]=1; } else q[i]=0; } } int ans=0; for(int i=1;i<=n;i++){ if((p&arr[i])==q) ans++; } cout<<ans<<endl; } return 0; }