刚开始没有考虑0也是一个单词的情况,卡在90分很久...后来终于发现了问题所在,改正后ac了,很高兴。
错误点:数组初始化全为0,这样就默认了字典中已经知道了一个单词0,题干中说开始默认一个单词都不知道.
改正:应该初始化存放字典的数组为无穷大(INF=0x3f3f3f3f),然后用原来的方法就通过了。
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int main(void){
int m,n;cin>>m>>n;
int arr[2005]={0},brr[2005]={0};int len=0,ans=0,flag=0;
memset(arr,INF,sizeof(arr));
for (int i=0;i<n;i++) cin>>brr[i];
for (int i=0;i<n;i++)
{
int sumb=0;
for (int j=0;j<m;j++)
{
if (arr[j]!=brr[i]) sumb++;
else break;
}
if (sumb==m)
{
if (len>=m)
{
for (int c=0;c<m-1;c++)
{
arr[c]=arr[c+1];
}
arr[m-1]=brr[i];ans++;
}
else
{
arr[len]=brr[i];ans++;len++;
}
}
}
cout<<ans;
}