类型 :模拟
ac代码
using namespace std;
int a[1100];
int search( int a[], int m, int t) // 查找这个数字是否在内存里
{
for( int i=1; i<=m; i++ )
{
if(a[i]== t)
return 1;
}
return 0;
}
void change( int a[],int m,int t) // 内存满了之后查去旧数字进新数字
{
a[1]=0;
for( int i=1; i<=m; i++)
{
a[i]= a[i+1];
}
a[m]= t;
}
int main()
{
for(int j=0; j<=1000; j++ )
{
a[j]= -1;
}
int m, n;
cin >> m >> n;
int cnt=0;
for( int i=1; i<=n; i++ )
{
int t;
cin >> t;
if(search(a, m, t)) {
continue;
}
else {
if( cnt<m )
{
a[cnt+1]=t;
cnt++;
}
else {
change(a, m, t);
cnt++;
}
}
}
cout << cnt;
return 0;
}
主要问题:
一开始没注意到非负整数包含零 二是对一开始对内存的写入不清晰
a[cnt+1]=t; 写成了 a[i] = t;