数组保存,想偷懒,原先准备输入z次,超过m就换成z%m位,由于k*m%m为0,所以从0位贮存,可是,超过m并不代表数组贮存了m位
改进后:
#include<bits/stdc++.h>
using namespace std;
int k,l,m,n,ha[110];
int main(){
// freopen("translate.in","r",stdin);
// freopen("translate.out","w",stdout);
scanf("%d%d",&m,&n);
for(int z=0;z<n;++z){
int a;
bool flag=0;
scanf("%d",&a);
for(int y=0;y<ha[101]&&y<m;++y)
if(a==ha[y]){
flag=1;
break;
}
if(!flag){
if(ha[101]==m){
ha[k%m]=a;
k++;
}
else ha[ha[101]++]=a;
++l;
}
}
printf("%d",l);
}```