直接用一个数组来存放内存中已经有的单词,内存已满时将从头开始存放并覆盖原有单词,每次查询都遍历一遍数组看是否有这个单词,如果没有就ans++。数组初始值为-1代表刚开始时为空。
#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
void solve()
{
int n,m,ans=0,ai,p=0;
bool find;
int a[105];
memset(a,-1,sizeof a);
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>ai;
find=false;
for(auto x:a)
{
if(x==ai)find=true;
}
if(!find)
{
ans++;
a[p]=ai;
p++;
if(p==m)p=0;//当内存满的时候从头开始覆盖
}
}
cout<<ans;
}
int main()
{
IOS;
solve();
return 0;
}