箱と鍵 (Boxes and Keys) 题解
题目大意
给定一个长度为 \(n\) 的数组 \(a\) 和一个长度为 \(m\) 的数组 \(b\),求 \(a\) 中有多少个数在 \(b\) 中出现过。
解题思路
数据比较小,可以直接暴力:
从数组 \(a\) 中查找 是否有 \(b_i\),有计数器加一,为了避免重复,只要出现一次,就要跳出循环;时间复杂度 \(O(nm)\)。
代码
#include<bits/stdc++.h>
#define ri register int
using namespace std;
int n,m,a[1001],b[1001],ans=0;
void cmp(int ans);
int main() {
cin>>n>>m;
for(ri i=1; i<=n; i++) cin>>a[i];
for(ri i=1; i<=m; i++) cin>>b[i];
cmp(ans);
return 0;
}
void cmp(int sum) {
for(ri i=1; i<=n; i++)
for(int j=1; j<=m; j++)
if(a[i]==b[j]){sum++;break;}
cout<<sum<<'\n';
}